2010-11-05 25 views

Respuesta

10

Con tanto detalle como se muestran, los dos ejemplos son semánticamente iguales.

Es un malentendido común de XML que en un documento XML bien formado el orden de los elementos hermanos es significativo. El XML 1.0 spec especifica que los atributos están desordenados, sin embargo, no dice nada sobre los elementos. Por lo tanto, un procesador XML es libre de informar hermanos de elementos en el orden que desee.

Dicho esto, no creo que ningún procesador XML utilizado comúnmente reporte elementos en un orden diferente al orden en que aparecen en un documento.

Pregunta sobre un documento 'válido' - esto implica que una DTD o esquema está en uso, y por lo tanto puede ser (o no) que la orden sea relevante. Existen mecanismos para que una DTD o esquema especifique que el orden de los elementos es relevante dentro de un documento. Sin embargo, sus ejemplos no muestran el uso de una DTD o esquema.

+0

De hecho, hay una DTD. Gracias. – Segolas

+0

"Es un malentendido común de XML que en un documento XML bien formado el orden de los elementos sea significativo". No es un malentendido. Ver 3.2.1. Por supuesto, un procesador XML podría ser capaz de procesar la restricción de secuencia y aún así devolver elementos en un orden diferente. También podría destruir todos los nodos de texto. –

+0

@Robert Rossney: he modificado para cambiar a "elementos hermanos", sin embargo, no veo la relevancia de 3.2.1 para ordenar los elementos hermanos en un documento bien formado. ¿Podrías elaborar? – philhobgen

1

Depende de la DTD (o esquema) de su definición de idioma.

1

Eso depende de lo que consuma el XML. El orden de los elementos puede no ser importante en términos de que el documento XML esté bien formado (dependiendo del XSD), pero ciertos programas/API esperan leer el XML en orden alfabético (como el DataContractSerializer en .NET).

Además, el orden puede ser semánticamente importante (por ejemplo, si el XML representa un documento, el orden es muy importante).

+3

Haría la distinción entre * valid * (es decir, se ajusta a algún DTD/schema) y * well-formed * (es decir, XML sintácticamente legal) más explícito. En este momento, estaría tentado de decir que este argumento es incorrecto debido a la forma en que usa la palabra "válido". –

+0

@Andrzej - buen punto. Actualicé mi respuesta para usar bien formada en lugar de válida. – RQDQ

+1

El orden de los elementos * nunca * será importante en términos de que esté bien formado y los XSD no tienen nada que ver con una buena formación. – Quentin

0

XML mantiene un orden de documentos; se consideran dos documentos diferentes.

Su aplicación puede o no considerar el orden de los elementos como importantes. Por ejemplo, el orden de los elementos es esencial en XHTML. Si está validando un Esquema o similar, depende del esquema si ambos documentos son válidos o no.

Tenga en cuenta que el orden de los atributos no es importante, sin embargo (los documentos XML que difieren solo en el orden de los atributos en los elementos se consideran idénticos).

4

No es importante para XML en sí. Ambos documentos son, por supuesto, bien formados documentos XML. Sin embargo, pueden no ser válido; al validar con un Esquema XML, es posible especificar un orden, y no proporcionar los elementos en ese orden hará que el documento sea inválido de acuerdo con el esquema. Esto se puede hacer con el elemento xsd:sequence como se describe here

Cuestiones relacionadas