XSD, разрешающий контент simpleType и complexType для одного и того же элемента?
У меня есть ситуация, когда у меня есть разные XML, которые будут иметь разные типы свойств. Иногда элементHEADER
может иметь только узел или некоторые XML могут иметь элементы внутриHEADER
узел и значения внутри.
Пример 1 (HEADER
только с текстом):
<Details HeaderLabel="DETAILS">
<HEADER Label="Header">2.5%</HEADER>
</Details>
Пример 2 (HEADER
с двумя дочерними элементами):
<Details HeaderLabel="DETAILS">
<HEADER Label="Header">
<HEAD Label="H1a">2.88%</HEAD>
<HEAD Label="H2b">3.24%</HEAD>
</HEADER>
</Details>
XSD работает следующим образом:пример 1:
<xs:element name="HEADER">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Label" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Это подтвердитпример 2:
<xs:element name="HEADER">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="HEAD">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Label" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Label" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
Я пытался с помощьюxs:choice
но, похоже, это не сработало, или, может быть, у меня нет четкого понимания того, как реализовать выбор в этой ситуации.