Rob Chartier ~ Contemplation...

.NET, C#, Work, etc.

News

www.flickr.com
This is a Flickr badge showing public photos from Rob & Kat Chartier. Make your own badge here.


Website Counter

Even Quicker Links

XSD vs DTD - So what's the difference?

Here are a number of differences.  Some are not important, some are real important and easy to understand, some are real important and hard to understand.  This list is not exhaustive.

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.

Rich Salz - http://www.datapower.com


In terms of validation functionality, XSD can define all the constraints that a DTD can define, and many more. To take a simple example, XSD can say that a particular attribute must be a valid date, or a number, or a list of URIs, or a string that is exactly 8 characters long. To take another example, XSD can define much richer constraints on uniqueness of values within a document. 

Michael Kay,http://www.saxonica.com/


The content of this post was shamelessly stolen from the XML-DEV mailing list archives.  I wanted to capture the data to avoid loosing it to the google machine.

 

Comments

Don Demsak said:

Actually, DTD's are not more secure, they are less secure. With DTDs you can actually create denial of service style attacks related to DTD entity expansion. This is not a MS only thing, but you can see the MSXML Security bulletin on it: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/1d712a47-64a8-4f76-b84c-36c7fcd8361e.asp

Don
# March 21, 2006 11:57 PM

Andrew said:

Ok, isn't it also true that xsd, as a parser, isn't that great an idea for a larger xml file, because of the memory overhead of loading the xml?

I've also felt that was a major defining difference...

# August 3, 2007 3:22 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)