我有一点问题。在此处的 XSD 全部元素规范中:http: //www.w3schools.com/schema/el_all.asp中写道,可以使用的父元素是定义组的 GROUP。我有这些 XSD 文件:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="DescriptionGroup">
<xs:all>
<xs:element name="description" type="xs:string"/>
<xs:element name="comment" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:group>
</xs:schema>
我将在此文件中指定更多组,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="DescriptionGroup">
<xs:all>
<xs:element name="description" type="xs:string"/>
<xs:element name="comment" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:group>
<xs:group name="DescriptionGroup2">
<xs:all>
<xs:element name="description2" type="xs:string"/>
<xs:element name="comment2" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:group>
<xs:group name="DescriptionGroup3">
<xs:all>
<xs:element name="description3" type="xs:string"/>
<xs:element name="comment3" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:group>
</xs:schema>
重点是 group 元素需要使用 element <xs:all>
。使用定义组我没有更多问题,一切都很好,但是当我需要使用此内容中的组时:
<xs:element name="tesName">
<xs:complexType>
<xs:choice minOccurs="0">
<xs:group minOccurs="0" ref="DescriptionGroup" />
<xs:group minOccurs="0" ref="DescriptionGroup2" />
<xs:group minOccurs="0" ref="DescriptionGroup3" />
</xs:choice>
</xs:complexType>
</xs:element>
XSD 验证抛出错误
错误 'all' 的组引用不是根粒子,或者它被用作扩展。
但<xs:all>
可以在团体中使用,这正是我在顶部所描述的。我需要一个 XML 文件元素 (testName) 3 种这样的组合:
<?xml version="1.0" encoding="windows-1250" ?>
<testing>
<tesName>
<description>bla bla bla</description>
<comment>ble ble ble</comment>
</tesName>
<tesName>
<description2>bla bla bla</description>
</tesName>
<tesName>
<comment3>bla bla bla</comment3>
</tesName>
<tesName>
<comment2>bla bla bla</comment2>
</tesName>
</testing>