Est-il un moyen de l'application/préserver l'ordre des éléments XML dans un Schéma XML?

Considérons le Schéma XML suivant:

<?xml version="1.0" encoding="UTF-8"?>
<schema 
    targetNamespace="http://www.example.org/library" 
    elementFormDefault="qualified" 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:lib="http://www.example.org/library">

    <element name="library" type="lib:libraryType"></element>

    <complexType name="libraryType">
        <sequence>
            <element name="books" type="lib:booksType"></element>
        </sequence>
    </complexType>

    <complexType name="booksType">
        <sequence>
            <element name="book" type="lib:bookType" 
                     maxOccurs="unbounded" minOccurs="1"></element>
        </sequence>
    </complexType>

    <complexType name="bookType">
        <attribute name="title" type="string"></attribute>
    </complexType>
</schema>

et un exemple de XML:

<?xml version="1.0" encoding="UTF-8"?>
<lib:library 
    xmlns:lib="http://www.example.org/library" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.example.org/library src/library.xsd ">

  <lib:books>
    <lib:book title="t1"/>
    <lib:book title="t2"/>
    <lib:book title="t3"/>
  </lib:books>

</lib:library>

Est-il un moyen de garantir que l'ordre de <lib:book .../> éléments est-elle préservée? Je veux être sûr que tout analyseur de lire le XML sera de retour des livres dans les oder, qui est d'abord le livre avec title="t1", puis le livre avec title="t2", et enfin le livre avec title="t3".

Autant que je sache parseurs XML ne sont pas nécessaires à la préservation de l'ordre. Je me demande si on peut appliquer ce par le biais de schémas XML? Une solution rapide pour moi, ce serait l'ajout d'un index attribut à la <lib:book .../> élément, et de déléguer la conservation de l'ordre pour l'application de la lecture du XML.

Commentaires? Des Suggestions?

Vous avez écrit "pour autant Que je sais parseurs XML ne sont pas nécessaires pour préserver l'ordre". D'où avez-vous cela? Ce n'est pas vrai pour les éléments. En fait, le xs:sequence de faire respecter l'ordre pour une validation de schéma.
La séquence n'a rien à voir avec un élément répété, mais avec un groupe disparate d'éléments enfants qui doivent se produire dans un ordre spécifique.

OriginalL'auteur MarcoS | 2010-05-26