A dtd (or Data Type Definition) uses it's own language to describe the XML
types. An XSD (XML Schema Definition) defines the XML types using XML.
Both attempt to describe the expected structure of an XML file. Both are
"executable" in that the XML parser can be instructed to "validate" a
particular XML file against the definition.
Using definition files will allow two parties to agree on what a "compliant"
XML document should look like for a particular application. This way,
developers of two systems can both agree on how an XML document should be
produced or consumed without these groups actually speaking to each other.
It allows the creating of industry-standards. Take a look at the Oasis and
Rosetta efforts to see tangible examples of how this is occuring today.
In general, XSDs are more powerful than DTDs and are, in my opinion, easier
to use. Very few folks create new XML definitions in DTD format any longer,
and if you have a choice, always use XSDs.
Visual studio has excellent support for creating XSDs in a visual manner
using the Schema Editor.
Hope this helps,
--- Nick