W3C XML Schema is complex and hard to learn, although that's partially because it tries to do more than mere validation (see PSVI).
Although being written in XML is an advantage, it is also a disadvantage in some ways.
There are several different languages available for specifying an XML schema. The primary purpose of a schema language is to specify what the structure of an XML document can be.
This means which elements can reside in which other elements, which attributes are and are not legal to have on a particular element, and so forth.
DTDs are perhaps the most widely supported schema language for XML.
Because DTDs are one of the earliest schema languages for XML, defined before XML even had namespace support, they are widely supported.
This may be by mapping the XSD-defined types to types in a programming language such as Java ("data binding") or by enriching the type system of XML processing languages such as XSLT and XQuery (known as "schema-awareness").
RELAX NG and W3C XML Schema allow for similar mechanisms of specificity.
W3C XML Schema has a formal mechanism for attaching a schema to an XML document, while RELAX NG intentionally avoids such mechanisms for security and interoperability reasons.Internal DTDs are often supported in XML processors; external DTDs are less often supported, but only slightly.Most large XML parsers, ones that support multiple XML technologies, will provide support for DTDs as well.Two more expressive XML schema languages in widespread use are XML Schema (with a capital S) and RELAX NG.The mechanism for associating an XML document with a schema varies according to the schema language.