XML-схема (XSD) - Как указать родительский элемент для содержания по крайней мере одного дочернего элемента?

У меня есть XML-схема (XSD), который определяет элемент как обязательный (назовите его родителем); этот родитель имеет, позволяет, говорят, пять дочерних элементов, которые могут все быть дополнительными, НО ПО КРАЙНЕЙ МЕРЕ ОДИН дочерний элемент должен произойти.

Как я могу указать это в xsd?

Разъясниться: дети являются различными элементами и дополнительный. Например.

<Parent>
   <Child1>contents are different to other siblings and arbitrary</Child1>
   <Child2>can be text, a simple element, or another complex element</Child2>
   <Child3>etc.. etc</Child3> 
</Parent>

<xs:complexType name="Parent">
  <xs:sequence>
    <xs:element minOccurs="0" name="Child1" type="xs:string"/>
    <xs:element minOccurs="0" name="Child2" />
    <xs:element minOccurs="0" name="Child3" />
  </xs:sequence>
</xs:complexType>

Даже при том, что каждый ребенок является дополнительным, родитель должен иметь по крайней мере одного ребенка.

6
задан joedotnot 22 March 2010 в 23:19
поделиться

3 ответа

Всегда есть прямой подход:

<xs:complexType name="Parent">
  <xs:choice>
    <xs:sequence>
      <xs:element name="Child1"/>
      <xs:element name="Child2" minOccurs="0"/>
      <xs:element name="Child3" minOccurs="0"/>
    </xs:sequence>
    <xs:sequence>
      <xs:element name="Child2"/>
      <xs:element name="Child3" minOccurs="0"/>
    </xs:sequence>
    <xs:sequence>
      <xs:element name="Child3"/>
    </xs:sequence>
  </xs:choice>
</xs:complexType>
5
ответ дан 17 December 2019 в 00:07
поделиться

Используйте minOccurs, например

<xsd:complexType name="Parent">
  <xsd:sequence>
    <xsd:element minOccurs="1" maxOccurs="5" name="Child" type="q10:string"/>
    </xsd:sequence>
</xsd:complexType>
0
ответ дан 17 December 2019 в 00:07
поделиться

Вы можете создать группу подстановки, которая включает все ваши дочерние элементы. Для этого вы используете атрибут minOccurs , чтобы указать, что в документе должен присутствовать хотя бы один элемент группы.

0
ответ дан 17 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: