Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DTD or XML Schema. Which one is better? [closed]

Tags:

xml

xsd

dtd

What are the pros / cons in DTD and XML Schemas (I'm not even sure what the official name of the latter is!)? Which is better? Why do we need two ways to do the same thing?

Edit: I found this in an article I was reading, which is what prompted me to ask the question:

Why W3C XML Schema Language?

The W3C XML Schema Language is not the only schema language. In fact, the XML specification describes document-type definitions (DTDs) as the way to express a schema. In addition, pre-release versions of the JAXB Reference Implementation worked only with DTDs -- that is, not with schemas written in the XML Schema Language. However, the XML Schema Language is much richer than DTDs. For example, schemas written in the XML Schema Language can describe structural relationships and data types that can't be expressed (or can't easily be expressed) in DTDs. There are tools available to convert DTDs to the W3C XML Schema Language, so if you have DTD-based schemas that you used with an earlier version of the JAXB Reference Implementation, you can use these tools to convert the schemas to XML Schema Language. http://java.sun.com/developer/technicalArticles/WebServices/jaxb/#binsch

I guess I would like examples that illustrate why XML-Schema is better (if it indeed is).

like image 906
les2 Avatar asked Sep 29 '09 04:09

les2


People also ask

Why is XML Schema better than DTD?

XML schema provides secure data communication i.e sender can describe the data in a way that receiver will understand, but in case of DTD data can be misunderstood by the receiver. XML schemas are extensible while DTD is not extensible.

Which is better XML or DTD?

There are many differences between DTD (Document Type Definition) and XSD (XML Schema Definition). In short, DTD provides less control on XML structure whereas XSD (XML schema) provides more control.

Which of the following is the difference between DTD and XML Schema?

The critical difference between DTDs and XML Schema is that XML Schema utilize an XML-based syntax, whereas DTDs have a unique syntax held over from SGML DTDs. Although DTDs are often criticized because of this need to learn a new syntax, the syntax itself is quite terse.

What are the advantages of DTD?

Advantages of using DTD Validation − It gives a way to check the validity of XML files by checking whether the elements appear in the right order, mandatory elements and attributes are in place, the elements and attributes have not been inserted in an incorrect way, and so on.


1 Answers

From http://weblogs.asp.net/rchartier/archive/2006/03/21/440782.aspx

  • DTD's are not namespace aware.

  • DTD's have #define, #include, and #ifdef -- or, less C-oriented, the ability to define shorthand abbreviations, external content, and some conditional parsing.

  • A DTD describes the entire XML document (even if it leaves "holes"); a schema can define portions.

  • XSD has a type system.

  • XSD has a much richer language for describing what element or attribute content "looks like." This is related to the type system.

  • You can put a DTD inline into an XML document, you cannot do this with XSD. This means DTD's are more secure (you only have to protect one bytestream -- the xml/dtd -- and not
    multiple).

  • The official definition of "valid XML" requires a DTD. Since this may be impractical, if not impossible, you often have to settle for schema-valid, which is not quite the same.

For my part, it's pretty straightforward to write a validator for some XML if you have an XSD. I haven't seen this with a DTD, although I'm sure it exists.

like image 59
Robert Harvey Avatar answered Sep 22 '22 10:09

Robert Harvey