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

如何在XSD规范中设置层次结构?,xsd,Xsd,我是xsd规范领域的新手,需要stackoverflow社区的帮助。我想做的是定义一个类别层次结构 例如: A类 1.1. B类 1.1.1 C类 如何在xsd规范中定义这一点? 也许有一些最佳实践解决方案 克里斯 我已经试着这样指定它。但我不确定这是否切实可行 <xs:element name="category"> <xs:complexType> <xs:sequence> <xs:element name="maincat

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

例如:

  • 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"/>
    
    
    
    克里斯

    你有两件事叫做“子类别”。我已将元素重命名为“元素”

    这就是我要做的:

    <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
    属性。这有一个非常具体的用例,
    类型
    属性看起来更接近您想要的内容。

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

    这就是我要做的:

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

    我已经在上面的问题中添加了我尝试过的内容,它是否按原样工作?你想帮忙修理它,还是想让它更干净?我想让它更干净。它是有效的,但我对这个解决方案不满意。我已经在上面的问题中添加了我已经尝试过的东西,它是有效的吗?你想帮忙修理它,还是想让它更干净?我想让它更干净。这是可行的,但我对这个解决方案不满意。你好,罗伯特!对不起,我迟了答复。但这就是我一直在寻找的。谢谢你的帮助。你好,罗伯特!对不起,我迟了答复。但这就是我一直在寻找的。谢谢你的帮助。