Diferencia entre y en la definición del esquema?


Estoy usando xsd:all en un tipo complejo. Cuando me pierdo cualquier elemento obligatorio durante la validación, se mostrarán todos los elementos. No mostrará el elemento exacto perdido.

Pero si utilizo 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.

Author: Stefan van den Akker, 2013-04-19

5 answers

<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á algo como esto:

<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 algo como esto:

<compElement>
  <ele2>Second</ele2>
  <ele1>First</ele1>
  <ele4>Fourth</ele4>
  <ele3>Third</ele3>
</compElement>

Más información sobre xsd: todos
Más información en xsd: sequence

Espero haber respondido a su pregunta.

 93
Author: Madhusudan Joshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-15 21:01:28

Diferencia

  • xsd: all - "los elementos secundarios pueden aparecer en cualquier orden y cada elemento secundario puede ocurrir cero o una vez" (es decir, maxOccurs puede ser 0 o 1)
  • xsd:sequence - "los elementos secundarios deben aparecer en una secuencia. Cada elemento hijo puede ocurrir de 0 a cualquier número de veces " (es decir, maxOccurs puede ser 0 o cualquier número o 'unbounded')

De los tutoriales de W3Schools aquí y aquí.

 18
Author: kamituel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-06 15:13:08

Todos Los Indicadores

El indicador <all> especifica que los elementos secundarios pueden aparecer en cualquier orden, y que cada elemento secundario debe aparecer solo una vez:

Indicador de secuencia

El indicador <sequence> especifica que los elementos secundarios deben aparecer en un orden específico:

Enlace de Referencia

 2
Author: NPKR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-28 00:23:22

El esquema simplemente define lo que constituye un documento compatible.

La forma en que se notifica el incumplimiento depende enteramente 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 que tendría que discutir con el proveedor del validador.

 1
Author: Joachim Lous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-01 12:05:04

Cuando usamos under tag, indica que todos los elementos que se declaran en ese complexType DEBEN aparecer en el mismo orden en el documento XML. de lo contrario, obtendrá un error. porque no hay necesidad de especificar los elementos en el orden adecuado.

 0
Author: user3423648,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-09 02:06:06