Схема XSD - как убедиться, что два простых элемента либо имеют значения, либо не имеют значений вместе

пожалуйста, помогите, это то, чего я хочу добиться при проверке моего XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<worker>
    <name>dingo</name>
    <ssn>12345</ssn>
</worker>

Я хочу убедиться, что два простых элемента «имя» и «ssn» либо имеют значения (как группа), либо не имеют никакого значения (как группа). Они не могут существовать по отдельности со значением.

Мне нужно использовать схему XSD, поэтому я не могу использовать другие параметры. Иногда я вижу предложения: Relax NG и т. д. Я изучил создание группы для элементов «имя» и «ssn», но я не могу узнать, как создать ограничение для эта группа, чтобы получить мое условие.

Мой текущий файл XSD:

<xs:complexType name="worker">
<xs:sequence>
    <xs:element name="name" type="xs:string" minOccurs="0" "maxOccurs="1">
    <xs:element name="ssn" type="xs:positiveInteger" minOccurs="0" "maxOccurs="1">
</xs:sequence>
</xs:complexType>

person 2147483647    schedule 08.01.2013    source источник


Ответы (1)


Ты должен сделать

<xs:complexType name="worker">
   <xs:group ref="workerGrp" minOccurs="0"/>
</xs:complexType>

<xs:group name="workerGrp">
  <xs:sequence>
    <xs:element name="name" type="xs:string">
    <xs:element name="ssn" type="xs:positiveInteger">
  </xs:sequence>
</xs:group>
person Baski    schedule 08.01.2013
comment
Благодарю. Я реализовал другое предложенное решение (поскольку для меня было меньше LOC!), но попробую это для своего образования. - person 2147483647; 09.01.2013