我有一種情況,我有不同的XML將具有不同類型的屬性。有時元素HEADER
可能只有一個節點,或者某些XML可能具有HEADER
節點中的元素和值。XSD允許simpleType和complexType內容爲相同的元素?
實施例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
,但它似乎沒有正常工作,或也許我沒有關於如何實現選擇一個清醒的認識在這個情況下。
的事情是我無法改變它的實現在覈心太多的元素,它會需要很多的變化,以它的依賴的名稱。只是好奇,在這種情況下你將如何實現mixed =「true」? –
在第二個'HEADER' XSD示例中,您可以將'mixed =「true」'添加到'xs:complexType'中。 – kjhughes
超級工作。非常感謝 –