43 votos

Cómo elegir entre DTD y XSD

Quiero utilizar un DTD o XSD para describir mi documento XML. He leído que el Xsd son mejores que las Dtd, ya que el apoyo a los espacios de nombres y tipos de datos, y que los DTDs son mayores de edad.

¿Significa esto que sólo debe utilizar Xsd para todas las futuras necesidades e ignorar totalmente DTD como una opción? Debería siquiera se moleste el aprendizaje de la estructura de la Dtd?

¿Qué factores debo tener en cuenta a la hora de elegir entre XSD y DTD?

41voto

Mike Mooney Puntos 5841

Probablemente es importante aprender Dtd como un ejercicio separado, sólo por el conocimiento de cómo funcionan en caso de que te encuentres en otra parte, y por lo que se puede apreciar algunas de las cosas que XSD estaba tratando de resolver.

Sin embargo, para el actual a los efectos de la descripción de un documento XML, de hecho, se adhieren a Xsd.

Además de tener un mucho más rico conjunto de características (como la que usted menciona, incluidos los tipos de datos y espacios de nombres), que también son documentos XML, que pueden ser realmente útiles. Porque son XML, usted puede comprobar su correcta forma y validez mucho más fácil, y usted puede escribir código que trabaja con ellos como con los archivos XML (por ejemplo, si usted quería para generar automáticamente el código de las clases a partir de un esquema)

6voto

Brant Puntos 2038

Realmente depende de la complejidad de la estructura es que usted necesita para la instalación.

Si usted necesita cosas como namespacing y tipos de datos, sin duda con XSD. Si usted sólo necesita una rápida poco esquema para comprobar contra, DTD le dará un rendimiento más rápido ya que no hay análisis de XML involucrados.

Como yo lo entiendo, XSD se deriva de DTD para la comprensión de la DTD le dará una base sólida para el aprendizaje XSD, además de señalar algunos de DTD de las lagunas.

5voto

Justin Niessner Puntos 144953

Duele no entender la estructura de un DTD (que va a ayudar a entender mejor un XSD en el largo plazo)...pero usted debe usar Xsd avanzando.

4voto

InfantPro'Aravind' Puntos 5728

No hay daño en el aprendizaje de la DTD, pero asegúrese de utilizar XSD, porque XSD tiene más fuerza,

Con XSD no sólo se puede validar la estructura de la jerarquía de las etiquetas XML, pero también,

  1. Puede definir el tipo de Datos de la los valores de los nodos. [la fecha, el número, cadena, etc]
  2. También puede definir personalizado data_types, [ejemplo, para el nodo , los datos pueden ser uno de los 12 meses.. así que usted necesita para definir todos los 12 meses en un nuevo tipo de datos de escribir todo de los 12 meses de nombres como los valores de enumeración .. la validación de la muestra error si la entrada XML contiene cualquier valor distinto de estos 12 valores .. ]
  3. Usted puede poner la restricción en el la aparición de los elementos, el uso de minOccurs y maxOccurs, el valor predeterminado los valores son 1 y 1.

.. y muchos más ...

Existen algunas restricciones: como,

  1. Un elemento(nombre), definido en el archivo XSD se debe definir con sólo un tipo de datos.
  2. No se puede validar un nodo/atributo con el valor de la otra nodo/atributo.

2voto

MikeTheGuru Puntos 21

Hay en mi humilde opinión es un tema muy importante a utilizar un DTD (tal vez junto con un XSD si usted necesita en-profundidad-validación):

En la DTD puede definir sus propias entidades, por ejemplo:

<!ENTITY MyName "DrDr.Hannibal Xerxes Utah,MBA and CEO">

En el documento se puede wherevever necesario simplemente el código y Minombre; en lugar de escribir todo esto.

Además, suponga que tiene un XML como archivo (tal vez producido por alguna otra aplicación) que se compone de un montón de etiquetas similares, pero no a la raíz de la etiqueta, por ejemplo:

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- you need this when using foreign characters like 'ü' -->
<Book Author="Author1">
  <Titel>Erstes Buch</Titel>
</Book>
...
<Book Author="Author5">
  <Titel>Fünftes Buch</Titel>
</Book>

Asumir este archivo se denomina "Booklist.TXT",

Ahora usted puede codificar su maestro-xml:

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- you need this when using foreign characters like 'ü' -->
<DOCTYPE MyRoot [
<ENTITY AllBooks SYSTEM "Booklist.TXT">
]

<MyRoot>
... some prefix-stuff as needed ...
&AllBooks; <!-- here are all the Books -->
... some post stuff es needed ...
</MyBook>

y siempre que usted necesite de los libros en otro contexto, sólo debes código de los alrededores de xml y habe no tocar o copia la lista de libros en sí, además de mantenimiento en un único lugar y de todos los cambios en cualquier documento.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X