¿Existe alguna diferencia entre 'xml válido' y 'xml bien formado'?

Resuelto user18931 asked hace 15 años • 13 respuestas

No me di cuenta de la diferencia, pero un compañero de trabajo dice que sí, aunque no puede respaldarlo. ¿Cuál es la diferencia si la hay?

user18931 avatar Sep 25 '08 23:09 user18931
Aceptado

Hay una diferencia, sí.

XML que cumple con el estándar XML se considera bien formado, mientras que XML que cumple con una DTD se considera válido.

Kilhoffer avatar Sep 25 '2008 16:09 Kilhoffer

XML bien formado versus XML válido

Bien formado significa que un objeto textual cumple con los requisitos del W3C para ser XML .

Válido significa que un XML bien formado cumple con los requisitos adicionales establecidos por un esquema específico.


Definiciones oficiales

Según la recomendación del W3C para XML :

[Definición: Un objeto de datos es un documento XML si está bien formado , como se define en esta especificación. Además, el documento XML es válido si cumple ciertas restricciones adicionales.]


Observaciones:

  • Un documento que no está bien formado no es XML. ( Comúnmente se utiliza XML bien formado, pero técnicamente es redundante).
  • Ser válido implica estar bien formado.
  • Estar bien formado no implica ser válido.
  • Aunque la Recomendación del W3C para XML define que la validez se basa en una DTD, el uso convencional permite que el término se aplique para la conformidad con los esquemas XML especificados mediante XSD , RELAX NG , Schematron u otros métodos.

Ejemplos de lo que causa que un documento sea...

No bien formado:

  • Un elemento carece de etiqueta de cierre (y no se cierra automáticamente).
  • Los elementos se superponen sin un anidamiento adecuado:<a><b></a></b>
  • A un valor de atributo le falta una comilla de cierre que coincida con la comilla de apertura.
  • <o &se utilizan en el contenido en lugar de &lto &amp;.
  • Existen múltiples elementos raíz.
  • Existen varias declaraciones XML o aparece una declaración XML en otro lugar que no sea la parte superior del documento.

Inválido

  • Falta un elemento o atributo, pero el esquema XML lo requiere.
  • Se utiliza un elemento o atributo pero no está definido por el esquema XML.
  • El contenido de un elemento no coincide con el contenido especificado por el esquema XML.
  • El valor de un atributo no coincide con el tipo especificado por el esquema XML.

Espacio de nombres bien formado

Técnicamente, los caracteres de dos puntos están permitidos en los nombres de componentes en XML. Sin embargo, los dos puntos solo deben usarse en nombres para fines de espacio de nombres:

Nota:

La Recomendación sobre espacios de nombres en XML [ Nombres XML ] asigna un significado a los nombres que contienen caracteres de dos puntos. Por lo tanto, los autores no deben utilizar los dos puntos en los nombres XML, excepto para fines de espacio de nombres, pero los procesadores XML deben aceptar los dos puntos como carácter de nombre.

Por lo tanto, otro término, espacio de nombres bien formado , se define en la Recomendación W3C sobre espacios de nombres en XML 1.0 que implica todas las reglas XML para el buen formato más aquellas que rigen los espacios de nombres y los prefijos de espacios de nombres.

Coloquialmente, el término bien formado se utiliza a menudo donde el espacio de nombres bien formado sería más preciso. Sin embargo, esta es una forma técnica menor de consecuencias menos prácticas que la distinción entre XML bien formado y válido que se describe en esta respuesta.

kjhughes avatar Sep 14 '2014 05:09 kjhughes