verifica sirven significa qué que procesamiento para los esquema ejemplos definido dato cómo cumple con archivos xml xsd dtd xml-validation

sirven - ¿Es posible usar esquemas XML internamente, al igual que las DTD?



xml schema y dtd (2)

En principio, puedes hacer:

<package> <xs:schema id="XSD"> ... schema goes here ... </xs:schema> <doc xsi:noNamespaceSchemaLocation="#XSD"> ... instance goes here ... </doc> </package>

Pero (a) no hay garantía de que un procesador de esquema en particular sea compatible con esta forma de URI de ubicación, y (b) es difícil ver el punto.

Sé que ya terminaron las DTD, pero nunca entendí realmente:

(i) si desea validar un documento, seguramente desea saber en qué esquema es válido, en lugar de confiar en que defina el suyo propio. ¿De qué sirve saber que "este documento es válido contra algunos esquemas, pero no tengo idea de qué hay en ese esquema"?

(ii) ¿Cuándo alguna vez tuvo un esquema que describía solo un documento de instancia única? Los esquemas, por su naturaleza, definen clases de documentos, y esas clases rara vez son simples.

Tengo el siguiente archivo XML que incluye la validación DTD interna:

<?xml version="1.0"?> <!DOCTYPE animals [ <!ELEMENT animals (animal)*> <!ELEMENT animal (skin, noise, eyes, diet, class, weight, special_skill)> <!ELEMENT skin (#PCDATA)> <!ELEMENT noise (#PCDATA)> <!ELEMENT eyes (#PCDATA)> <!ELEMENT diet (#PCDATA)> <!ELEMENT class (#PCDATA)> <!ELEMENT weight (#PCDATA)> <!ELEMENT special_skill (#PCDATA)> <!ATTLIST animal name CDATA #REQUIRED > <!ATTLIST weight unit CDATA "kg"> ]> <animals> <animal name="cow"> <skin> Straight fur </skin> <noise> Moo! </noise> <eyes> 2 </eyes> <diet> Herbivore </diet> <class> Mammalia </class> <weight unit="kg"> 635-1134 </weight> <special_skill> Chewing </special_skill> </animal> <animal name="sheep"> ... </animal> </animals>

Estaba buscando cómo reemplazar la validación DTD con un XSD pero no pude encontrar ningún ejemplo. Parece que las XSD siempre deben definirse en un archivo separado y el XML debe hacer referencia a ellas. ¿Es cierto que XSD no se puede usar internamente?