具有未定义项目计数的XML-Schema

时间:2012-07-06 15:39:44

标签: c# .net xml serialization schema

制作XML-Schema时遇到了一些麻烦。

这是我在items.xml中的一个小例子

<items>    
  <category name="Sample Category #1">
    <category name="Sample Subcategory #1.1">
      <object>
        <name>Sample Inner Object</name>
        <desc>Sample Description</desc>
      <object>
    </category>
    <object>
      <name>Sample Name</name>
      <desc>Sample Description #2</desc>
    <object>
  </category>
  <category name"MyCat #2">
    <object>
      <name>Another Object</name>
      <desc>Another Description</desc>
    <object>
  </category>
</items>

现在,正如您已经看到的那样,类别中可以存在“无限”子类别。它们可以包含对象,但它们的父对象也可以包含对象。这描述了我的问题: 我如何在xsd中定义我想要在我的第一层中使用-Elements,而在子图层或仅包含这两个元素的对象中包含'无限'可能性。

这可能与xsd(我想是这样,但我不知道如何)或者我选择使用xml这种'数据库'是完全错误的吗?

PS:我想稍后在C#中实现这个结构。

1 个答案:

答案 0 :(得分:0)

这有用吗?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="categoryType">
    <xs:sequence>
        <xs:element name="category" type="categoryType" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="object" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="name" type="xs:string"/>
                    <xs:element name="desc" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>

<xs:element name="items">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="category" type="categoryType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>