Hasta la fecha, hemos visto qué elementos de un documento XML (elementos, atributos, comentarios ...) y qué reglas tiene que seguir, para que el documento esté bien formado; es decir, ser sintácticamente correcto.
No se menciona, específicamente, qué elementos o atributos pueden aparecer, en qué orden, qué valor pueden tomar, etc.
Si lo hicieramos, definiríamos un lenguaje XML específico, incluyendo: vocabulario (elementos y atributos compatibles), relación entre elementos y atributos, valores aceptados para ellos, etc.
Un documento XML es válido si hay algunas reglas de validación asociadas (por ejemplo, definición de tipo de documento (DTD)), para que el documento cumpla con estas reglas. Estas reglas determinan la estructura gramatical y la sintaxis para ser documentos XML.
Todos los documentos XML válidos están bien formados, pero no viceversa.
Para entender la diferencia entre un documento bien formado y un documento válido, veremos su equivalencia con una frase en castellano.
La montaña nevada es <---> La montaña está nevosa
Ambas frases están bien escritas en castellano, en términos de vocabulario; Es decir, las palabras que aparecen en la oración son correctas en castellano. Sin embargo, desde el punto de vista de la gramática, la primera oración es incorrecta (no cumple con la regla de clase "sujeto + predicado"). La segunda frase sólo es válida si se considera la gramática de la lengua castellana.
Los documentos XML se dividen en dos grupos, bien formados y válidos.
Bien construido: documentos que cumplen con todas las especificaciones de las reglas sintácticas sin estar sujetos a una DTD fija (definición de tipo Documente).
Documentos XML bien formados
Las reglas de sintaxis XML cumplirán los siguientes requisitos específicos:
<aviso>
<para>Andoni</para>
<quien>Jon</quien>
<cabecera>Gogorapena</cabecera>
<contenido>Para los planes del fin de, no te olvides de mi</contenido>
</aviso>
Valores: Además de estar bien estructurado, un DTD debe seguir una estructura y una semántica. Los esquemas DTD y XML se utilizan para escribir reglas de validez. Los documentos XML bien formados se ajustarán a las reglas de sintaxis XML que se cumplen específicamente:
(DTD)
Define los elementos, atributos, entidades y notas que se pueden documentar y determina las reglas de uso.
A través de éstos demostraremos la validez de los documentos.
El propósito de la DTD es definir la estructura XML, que es una lista de elementos legales.
<?xml version = "1.0" encoding = "ISO-8859-1"?>
<!DOCTYPE aviso
[
<!ELEMENT aviso (para, quien, cabecera, contenido)>
<!ELEMENT para (#PCDATA)>
<!ELEMENT quien (#PCDATA)>
<!ELEMENT cabecera (#PCDATA)>
<!ELEMENT contenido (#PCDATA)>
]>
<aviso>
<para>Andoni</para>
<quien>Jon</quien>
<cabecera>Gogorapena</cabecera>
<contenido>Para los planes del fin de, no te olvides de mi</contenido>
</aviso>
o: XML será "válido" si está "bien formado" y también cumple con las reglas de un documento en la DTD:
<?Xml version = "1.0" encoding = "ISO-8859-1"?>
<!DOCTYPE SYSTEM aviso "aviso.dtd">
<aviso>
<para>Andoni</para>
<quien>Jon</quien>
<cabecera>Gogorapena</cabecera>
<contenido>Para los planes del fin de, no te olvides de mi</contenido>
</aviso>
DOCTYPE hace referencia a nuestro documento XML a un documento DTD. Esquemas XML
W3C ha creado otra alternativa para el DTD y se le habría denominado "XML Schema":
<xs:element name="aviso">
<xs:complexType>
<xs:sequence>
<xs:element name="para" type="xs:string"/>
<xs:element name="quien" type="xs:string"/>
<xs:element name="cabecera" type="xs:string"/>
<xs:element name="contenido" type="xs:string"/>
</xs: sequence>
</xs:complexType>
</xs:element>