2

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

例子:

  1. A 类
    1.1。B
    类 1.1.1 C 类

我如何在 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"/>

克里斯

4

1 回答 1

0

您有两个名为“子类别”的东西。我已将元素重命名为“元素”。

这就是我要做的:

<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属性看起来更接近您想要的。

于 2012-06-29T11:43:33.183 回答