Давайте рассмотрим следующую XML-схему:
<?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>
и соответствующий пример 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>
Есть ли способ гарантировать что порядок <lib:book .../>
элементы сохраняются? Я хочу быть уверенным, что любой синтаксический анализатор, читая XML возвратит книги в указанном Одере, который является первым книга с title="t1"
, затем книга с title="t2"
, и наконец книга с title="t3"
.
Насколько я знаю, что синтаксические анализаторы XML не требуются, чтобы сохранять порядок. Интересно, можно ли осуществить это через XML-схему? Одно быстрое решение для меня добавило бы index
припишите <lib:book .../>
элемент и делегат заказывают сохранение приложению, читая XML.
Комментарии? Предложения?
Порядок элементов (в отличие от атрибутов) важен в XML, и каждый известный мне парсер сохраняет его.