xsd模式中的递归元素

时间:2013-01-31 08:27:50

标签: c# xml recursion

我正在尝试为类别制作XSD,但它总是给我这个警告错误 警告:名称空间''无法在此架构中引用 错误:未报告“类别” 我试图制作没有指定层次结构的递归类别

这是我的XSD结构

<xs:schema xmlns:tns="http://www.tempuri.org" targetNamespace="http://www.tempuri.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Categories">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Category" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Category">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string" />
        <xs:element name="code" type="xs:string" />
        <xs:element name="parent" nillable="true" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Category" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

所需的xml就像

<?xml version="1.0" encoding="utf-8"?>
<Categorıes>
<Category>
<Code>1</Code>
<Name>Kategori1</Name>
<Parent>0</Parent>
<Category>
<Code>11</Code>
<Name>Kategori11</Name>
<Parent>1</Parent>
<Category>
<Code>111</Code>
<Name>Kategori111</Name>
<Parent>11</Parent>
</Category>
</Category>
</Category>
<Category>
<Code>2</Code>
<Name>Kategori2</Name>
<Parent>0</Parent>
<Category>
<Code>21</Code>
<Name>Kategori21</Name>
<Parent>2</Parent>
<Category>
<Code>211</Code>
<Name>Kategori211</Name>
<Parent>21</Parent>
</Category>
<Category>
<Code>212</Code>
<Name>Kategori212</Name>
<Parent>21</Parent>
</Category>
</Category>
</Category>
</Categorıes>

请帮帮我

1 个答案:

答案 0 :(得分:0)

Category元素位于命名空间http://www.tempuri.org中,因此您需要将其引用为

<xs:element minOccurs="0" maxOccurs="unbounded" ref="t:Category"
            xmlns:t="http://www.tempuri.org"/>

当然命名空间声明可以出现在任何祖先元素上;通常把它放在xs:schema本身上。