Как я могу создать свой xsd, чтобы игнорировать последовательность элементов?Игнорировать порядок элементов с помощью xs: extension
<root> <a/> <b/> </root>
<root> <b/> <a/> </root>
мне нужно использовать extension
по причинам генерации кода, так что я попытался следующие с помощью all
:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.example.com/test"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://www.example.com/test" >
<xs:complexType name="BaseType">
<xs:all>
<xs:element name="a" type="xs:string" />
</xs:all>
</xs:complexType>
<xs:complexType name="ExtendedType">
<xs:complexContent>
<xs:extension base="t:BaseType">
<xs:all> <!-- ERROR -->
<xs:element name="b" type="xs:string" />
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="root" type="t:ExtendedType"></xs:element>
</xs:schema>
Этот XSD не действует хотя, е следующее сообщение об ошибке сообщается на <!-- ERROR -->
:
COS-все-limited.1.2: все модели группа должна появиться в частицах с {мин происходит} = {макс происходит} = 1, и что частица должна быть частью пары, которая представляет собой {тип содержимого} определения сложного типа.
Документация cos-all-limited.1.2 говорит:
1,2 в {термин} свойство частицы с {макс происходит} = 1, который является частью пары, которая представляет собой {тип контента} сложного типа определение.
Я не очень понимаю, это (ни XSD, ни английский НОСИТЕЛЕМ :)).
Я делаю неправильно, правильно ли я поступаю неправильно, или нет способа достичь этого?
@Peter Да, я пропустил эту часть. Вот обновление. – Bolo
Спасибо за ваше обновление. К сожалению, мне нужно определить некоторые элементы в базовом типе, а некоторые в расширенном, поэтому, если нет другого способа, элементы расширенного типа всегда должны быть размещены после элементов базового типа ... –
@Peter В этом случае, поскольку «две модели контента рассматриваются как два дочерних элемента последовательной группы», нет способа (насколько я могу видеть) игнорировать последовательность. – Bolo