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允许“一个”不完全具有一个后代。我仍然对解决方案感兴趣;-) –