Я пытаюсь придумать схему XSD 1.0 со следующими ограничениями:XSD схема с неупорядоченными требуется, необязательные и произвольными тегами
- Существует нет заказа
- Некоторых элементов не должны появляться ровно один раз
- Некоторые элементы могут появиться ноль или неограниченными раз
- Разрешить непризнанные элементы (не проверять их)
В г eason для 3. заключается в том, что я хотел бы проверить тип, если элемент присутствует.
Например, у человека должно быть только одно имя, необязательный возраст (не более одного), дополнительные номера телефонов (без ограничений) и любые другие теги. Они должны проверить:
<person>
<name>Bob</name>
<age>33</age>
<phone>123456789</phone>
<phone>123456788</phone>
</person>
<person>
<name>Alice</name>
</person>
<person>
<name>John</name>
<!-- unrecognized, arbitrary tags: -->
<location>city</location>
<occupation>laywer</occupation>
</person>
Принимая во внимание, они должны не Validate:
<person>
<!-- I am missing a name -->
<phone>123456789</phone>
</person>
<person>
<!-- I should only have one name -->
<name>Sally</name>
<name>Mary</name>
</person>
<person>
<name>Josh</name>
<!-- Phone number is not an int -->
<phone>not a number</phone>
</person>
Это недопустимый XSD, который захватывает в человеческой понятную образом, что я пытаюсь сделать:
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element type="xs:string" name="name" minOccurs="1" maxOccurs="1"/>
<xs:element type="xs:int" name="age" minOccurs="0" maxOccurs="1"/>
<xs:element type="xs:int" name="phone" minOccurs="0" maxOccurs="unbounded"/>
<xs:any />
</xs:all>
</xs:complexType>
</xs:element>
Этот XSD недействителен, поскольку вы не можете использовать <any>
под номером <all>
, а поскольку XSD 1.0 не позволяет вам o имеют maxOccurs="unbounded"
в элементе <all>
. Кто-нибудь знает, как это можно сделать?
Я надеялся, что это будет возможно с XSD 1.0. Спасибо, что подтвердили, что это невозможно. – Theo
Возможно ли это с RNG? Я написал схему RNG, которая удовлетворяла 1., 2. и 3. вышеуказанных ограничений, но не могла найти эквивалент RNG - любые идеи? –
Theo
Поднять новый вопрос. –