0
我想指定使用XSD形式的XML的文件:XSD延伸序列
<root xsi:noNamespaceSchemaLocation="test2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mult>
<end />
<one>
<end />
</one>
<end />
<mult>
<end />
</mult>
<mult />
</mult>
</root>
也就是說,兩個,多重峯和結束,實例化一個共同的抽象類型。 我不清楚如何定義MULT類型沒有進一步引入XML的內容如下:
<root xsi:noNamespaceSchemaLocation="test2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mult>
<value>
<end />
</value>
<value>
<one>
<end />
</one>
</value>
<value>
<end />
</value>
<value>
<mult>
<value>
<end />
</value>
</mult>
</value>
<value>
<mult />
</value>
</mult>
</root>
爲後者的文件,我可以使用:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="TYPE_end" />
<xs:complexType name="TYPE_one">
<xs:complexContent>
<xs:extension base="TYPE_abstract" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TYPE_mult">
<xs:sequence>
<xs:element name="value" type="TYPE_one" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TYPE_abstract">
<xs:choice>
<xs:element name="end" type="TYPE_end" />
<xs:element name="one" type="TYPE_one" />
<xs:element name="mult" type="TYPE_mult" />
</xs:choice>
</xs:complexType>
<xs:element name="root" type="TYPE_abstract"/>
</xs:schema>
不過,我不知道如何以避免額外的價值標籤。 我可以重複的元素,如下面的例子中的列表中,但這種重複是不是很好,以及...
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="TYPE_end" />
<xs:complexType name="TYPE_one">
<xs:complexContent>
<xs:extension base="TYPE_abstract" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TYPE_mult">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="end" type="TYPE_end" />
<xs:element name="one" type="TYPE_one" />
<xs:element name="mult" type="TYPE_mult" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TYPE_abstract">
<xs:choice>
<xs:element name="end" type="TYPE_end" />
<xs:element name="one" type="TYPE_one" />
<xs:element name="mult" type="TYPE_mult" />
</xs:choice>
</xs:complexType>
<xs:element name="root" type="TYPE_abstract"/>
</xs:schema>
任何想法如何提供更好的解決方案?
謝謝您的回答!但是,這不是解決方案,因爲您提供的xsd允許「一個」不完全具有一個後代。我仍然對解決方案感興趣;-) –