如何在XSD规范中设置层次结构?

时间:2012-06-28 19:11:18

标签: xsd

我是xsd规范领域的新手,我需要stackoverflow社区的帮助。我想要做的是定义一个类别层次结构。

示例:

  1. A类 1.1。 B类     1.1.1 C类
  2. 我如何在xsd规范中定义它? 也许有一些最佳实践解决方案。

    克里斯

    我试图像这样指定它。但我不确定这是否是一种切实可行的方法。

    <xs:element name="category">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="maincategory">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="subcategory">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element ref="subcategory"/>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    
    <xs:element name="maincategory" type="xs:string"/>
    <xs:element name="subcategory" type="xs:string"/>
    

    克里斯

1 个答案:

答案 0 :(得分:0)

你有两个名为“subcategory”的东西。我已将元素重命名为“element”。

这就是我要做的事情:

<xs:complexType name="category_t">
  <xs:sequence>
    <xs:element name="maincategory" type="main_category_t" />
  </xs:sequence>
</xs:complexType>

<xs:complexType name="main_category_t">
  <xs:sequence>
    <xs:element type="subcategory_t" />
  </xs:sequence>
</xs:complexType>

<xs:complexType name="subcategory_t">
  <xs:sequence>
    <xs:element name="element" type="xs:string" />
  </xs:sequence>
</xs:complexType>

<xs:element name="category" type="category_t" />

我认为您可能不需要使用ref属性。这有一个非常具体的用例,type属性看起来更接近你想要的。