1

我在制作 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# 中实现这个结构。

4

1 回答 1

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>
于 2012-07-07T10:26:45.617 回答