我想使用xsd指定格式为xml的文件:
<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和end都实例化了一个常见的抽象类型。 我不清楚如何定义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>
但是,我不知道如何避免额外的value-tag。 我可以复制元素列表,如下例所示,但这种复制也不好......
<?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>
如何提供更好的解决方案?
答案 0 :(得分:0)
如果没有关于XML规则的更多信息,以下内容似乎可以正常工作
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML 2016 Developer Bundle Edition 14.1.4.6649 (https://www.liquid-technologies.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="TYPE_abstract">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="end" />
<xs:element name="one" type="TYPE_abstract" />
<xs:element name="mult" type="TYPE_abstract" />
</xs:choice>
</xs:complexType>
<xs:element name="root" type="TYPE_abstract" />
</xs:schema>