Estoy usando xsd:all
en un tipo complejo. Cuando pierdo algún elemento obligatorio al validarlo, se mostrarán todos los elementos. No mostrará el elemento perdido exacto.
Pero si estoy en uso xsd:sequence
, puedo obtener el elemento perdido exacto.
¿Hay alguna diferencia entre estos dos?
xsd:sequence
: El elemento XML debe estar en el mismo orden.
Pero xsd:all
: el elemento XML puede ser de cualquier orden.
xml
xsd
xml-validation
xsd-validation
user1679378
fuente
fuente
Respuestas:
<xsd:all>
especifica que los elementos secundarios pueden aparecer en cualquier orden.<xsd:sequence>
especifica que los elementos secundarios solo pueden aparecer en el orden mencionado.Ejemplo de secuencia:
<xs:element name="compElement"> <xs:complexType> <xs:sequence> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Si crea un XML a partir de este xsd, se verá así:
<compElement> <ele1>First</ele1> <ele2>Second</ele2> <ele3>Third</ele3> <ele4>Fourth</ele4> </compElement>
Ejemplo para todos:
<xs:element name="compElement"> <xs:complexType> <xs:all> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>
Si crea un archivo XML a partir de este xsd, entonces podría verse así:
<compElement> <ele2>Second</ele2> <ele1>First</ele1> <ele4>Fourth</ele4> <ele3>Third</ele3> </compElement>
Más información sobre xsd: all
Más información sobre xsd: sequence
Espero haber respondido a tu pregunta.
fuente
Diferencia:
De los tutoriales de W3Schools aquí y aquí .
fuente
<xs:all>
limita el número de veces que puede ocurrir un elemento hijo? No puedo encontrar evidencia de esto en la especificación W3C.Todo indicador
Indicador de secuencia
Link de referencia
fuente
El esquema simplemente define lo que constituye un documento compatible.
La forma en que se informa el incumplimiento depende totalmente del validador. No hay nada que impida que un validador informe exactamente qué campos faltan, pero aparentemente el que usa no lo hace en este caso.
Si se trata de un error o por diseño, debería discutirlo con el proveedor del validador.
fuente
EJEMPLO XML SIMPLE:
<school> <firstname>John</firstname> <lastname>Smith</lastname> </school>
XSD DEL XML ARRIBA (Explicado):
<xs:element name="school"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Aquí:
xs: element : define un elemento.
xs: all : indica que los elementos secundarios pueden aparecer en cualquier orden.
xs: sequence : indica que los elementos secundarios solo aparecen en el orden mencionado.
xs: complexType : indica que contiene otros elementos.
xs: simpleType : indica que no contienen otros elementos.
tipo: cadena, decimal, entero, booleano, fecha, hora,
Con la ayuda de atributos adicionales, podemos realizar múltiples operaciones.
Realizar cualquier tarea en xsd es más simple que xml.
fuente
cuando usamos bajo etiqueta, indica que todos los elementos que están declarados en ese complexType DEBEN aparecer en el mismo orden en el documento XML. de lo contrario, obtendrá un error. porque no es necesario especificar los elementos en el orden adecuado.
fuente