XSD 架构中的递归元素

本文关键字:递归 元素 XSD | 更新日期: 2023-09-27 17:56:51

我正在尝试为类别制作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>

请帮助我

XSD 架构中的递归元素

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

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

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