XSD, das sowohl simpleType- als auch complexType-Inhalte für dasselbe Element zulässt?
Ich habe eine Situation, in der ich verschiedene XML-Dateien habe, die unterschiedliche Arten von Eigenschaften haben. Manchmal ist das ElementHEADER
könnte nur einen Knoten haben oder einige XMLs könnten Elemente innerhalb des @ habHEADER
Knoten und Werte im Inneren.
Beispiel 1 HEADER
mit nur text):
<Details HeaderLabel="DETAILS">
<HEADER Label="Header">2.5%</HEADER>
</Details>
Beispiel 2 HEADER
mit zwei untergeordneten Elementen):
<Details HeaderLabel="DETAILS">
<HEADER Label="Header">
<HEAD Label="H1a">2.88%</HEAD>
<HEAD Label="H2b">3.24%</HEAD>
</HEADER>
</Details>
Das XSD funktioniert wie folgt: Dies wird für @ validierBeispiel :
<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>
Dies validiert dasbeispiel 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>
Ich habe versucht mitxs:choice
aber es schien nicht gut zu funktionieren, oder vielleicht habe ich kein klares Verständnis, wie die Wahl in dieser Situation umgesetzt werden kann.