Pregunta

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?

¿Fue útil?

Solución

Hay una diferencia, sí.

XML que se adhiere al estándar XML se considera bien formado, mientras que xml que se adhiere a un < a href = "https://www.w3schools.com/xml/xml_dtd.asp" rel = "noreferrer"> DTD se considera válido.

Otros consejos

XML válido es XML que tiene éxito la validación contra un DTD.

XML bien formado es XML que tiene todas las etiquetas cerradas en el orden correcto y, si tiene una declaración, lo tiene primero en el archivo con los atributos adecuados.

En otras palabras, la validez se refiere a la semántica, la buena formación se refiere a la sintaxis.

Para que pueda tener XML inválido y bien formado.

XML bien formado frente a XML válido

Well-formed significa que un objeto textual cumple con el Requisitos del W3C para siendo XML .

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


Definiciones oficiales

Según la Recomendación W3C para XML :

  

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


Observaciones:

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

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

No bien formado :

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

Inválido :

  • Falta un elemento o atributo pero es requerido por el esquema XML.
  • 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 deberían solo se utilizará en nombres con fines de espacio de nombres:

  

Nota :

     

Los espacios de nombres en la Recomendación XML [ Nombres XML ] asigna un   que significan nombres que contienen caracteres de dos puntos. Por lo tanto, los autores   no debe usar 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, namespace-well-form , se define en Espacios de nombres en la Recomendación XML 1.0 W3C que implica todas las reglas XML para una buena formación plus de esos espacios de nombres y prefijos de espacio de nombres.

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

Como han dicho otros, el XML bien formado se ajusta a la especificación XML y el XML válido se ajusta a un esquema determinado.

Otra forma de decirlo es que un XML bien formado es léxicamente correcto (se puede analizar), mientras que XML válido es gramaticalmente correcto (se puede relacionar con un vocabulario y una gramática conocidos).

Un documento XML no puede ser válido hasta que esté bien formado.Todos los documentos XML se rigen por el mismo estándar de buen formato (un RFC publicado por el W3).Un documento XML puede ser válido para algunos esquemas y no válido para otros.Hay varios lenguajes de esquema, muchos de los cuales están basados ​​en XML.

XML bien formado es XML que cumple con los requisitos sintácticos del lenguaje. No faltan las etiquetas de cierre, hacer que todas sus etiquetas de singleton usen <whatever /> en lugar de solo <whatever>, y tener sus etiquetas de cierre en el orden correcto.

Valid XML es XML que utiliza un DTD y cumple con todos sus requisitos. Entonces, si usa un atributo incorrectamente, viola la DTD y no es válido.

Todos los XML válidos están bien formados, pero no todos los XML bien formados son válidos.

XML está bien formado si cumple con los requisitos para todos los documentos XML establecidos por los estándares, por lo que cosas como tener un solo nodo raíz, tener nodos correctamente anidados, todos los nodos tienen una etiqueta de cierre (o usar la abreviatura de nodo vacío de una barra oblicua antes del corchete angular de cierre), los atributos se citan, etc. Estar bien formado significa que se adhiere a las reglas de XML y, por lo tanto, se puede analizar correctamente.

XML es válido si se validará contra un DTD o esquema. Obviamente, esto difiere de un caso a otro: el XML que es válido para un esquema no será válido para otro esquema, aunque todavía esté bien formado.

Si XML no está bien formado, no se puede analizar correctamente: los analizadores simplemente lanzarán una excepción o informarán un error. Esto es genérico y no importa lo que contenga su XML. Solo una vez que se analiza puede verificarse su validez. Este dominio o contexto depende y requiere un DTD o esquema para validar. Para documentos XML simples, es posible que no tenga un DTD o esquema, en cuyo caso no puede saber si el XML es válido; el concepto o validez simplemente no se aplica en este caso. Por supuesto, esto no significa que no pueda usarlo, solo significa que no puede saber si es válido o no.

W3C, en la especificación XML, ha definido ciertas reglas que deben seguirse al crear documentos XML. Los ejemplos de tales reglas incluyen tener exactamente un elemento raíz, tener una etiqueta final para cada etiqueta inicial, usar comillas simples / dobles para los valores de los atributos, y así sucesivamente. Si un documento XML sigue todas estas reglas, se dice que es un documento bien formado y se pueden usar analizadores XML para analizar y procesar dichos documentos.

Las definiciones de tipo de documento (DTD) o los esquemas XML se pueden usar para definir la estructura y el contenido de una clase específica de documentos XML. Esto incluye los detalles de la relación padre-hijo, listas de atributos, información de tipo de datos, restricciones de valor, etc. Además de las reglas de buena forma, si un documento XML también sigue las reglas especificadas en el DTD / Esquema asociado, se dice que ser un documento XML válido.

Todos los documentos XML válidos están bien formados, pero lo contrario no siempre es cierto. Los documentos XML bien formados no necesariamente tienen que ser válidos.

Agregaré que un XML válido también implica que está bien formado, pero un XML bien formado no es necesariamente válido.

Además de los DTD mencionados anteriormente, existen otras 2 formas de describir y validar documentos XML: XMLSchema y RelaxNG , que pueden ser más fáciles de usar y admitir más características que DTD.

Si XML confirma las reglas DTD, entonces es un XML válido. Si un documento XML se ajusta a las reglas XML (todas las etiquetas iniciado están cerrados, hay un elemento raíz, etc.) entonces es un XML bien formado.

Tomado de Lenguaje de marcado extensible (XML) 1.0 (quinta edición) - W3C Recomendación 26 de noviembre de 2008 :

  

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


Para aquellos que prefieren el código psuedo a párrafos sobre párrafos de texto ... :)

IF is_well_formed(<XML_doc>) THEN
    # It is well-formed, and can be parsed
    IF is_valid(<XML_doc>) THEN
        # Well-formed and ALSO valid. Hurray! 
        # **A valid XML doc, is a well-formed doc!**
    ELSE
        # Only well-formed, NOT valid
    END IF
ELSE
    # Not well-formed, or valid!
END IF

FUNCTION is_well_formed
    IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION 

FUNCTION is_valid
    IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
        # Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION

Basado en la teoría: " Bien formado " vs. Válido

DTD es el acrónimo de Document Type Definition. Esta es una descripción del contenido de una familia de archivos XML. Esto forma parte de la especificación XML 1.0 y permite describir y verificar que una instancia de documento determinada se ajusta al conjunto de reglas que detallan su estructura y contenido.

La validación es el proceso de verificar un documento contra un DTD (más generalmente contra un conjunto de reglas de construcción).

El proceso de validación y la creación de DTD son las dos partes más difíciles del ciclo de vida XML. Brevemente, un DTD define todos los elementos posibles que se encuentran dentro de su documento, cuál es la forma formal de su árbol de documentos (definiendo el contenido permitido de un elemento; ya sea texto, una expresión regular para la lista permitida de elementos secundarios o contenido mixto es decir, tanto texto como hijos). El DTD también define los atributos válidos para todos los elementos y los tipos de esos atributos.

Bueno, XML que no está bien formado, por definición, no es XML. Poeple generalmente se refiere a XML válido como XML que se adhiere a un determinado esquema (XSD o DTD).

Consulte DTD XML en escuelas W3 :

  

Un documento XML con la sintaxis correcta se llama " Bien formado " ;.

     

Un documento XML validado contra un DTD es ambos & "; Bien formado &"; y   " Válido " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top