引用包含xs:all的XSD组

时间:2013-02-15 09:54:46

标签: xml xsd

我有点问题。在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元素需要使用元素<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验证抛出错误

  

错误组'ref'为'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>

0 个答案:

没有答案