未知元素的XML架构验证

本文关键字:验证 XML 元素 未知 | 更新日期: 2023-09-27 18:26:40

我正在尝试用C#中的模式验证XML。我将在row元素下面有一个未知元素。我正在使用xs:any,我得到以下错误

元素"row"具有无效的子元素"Name"。

架构-

<xs:element name="table">
  <xs:complexType>
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="row">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

XML-

<table>
  <row>
    <ProductID>994</ProductID>
    <Name>LL Bottom Bracket</Name>
    <ProductModel>LL Bottom Bracket</ProductModel>
    <CultureID>en    </CultureID>
    <Description>Chromoly steel.</Description>
  </row> 
</table>

未知元素的XML架构验证

您没有在xs:any上指定maxOccurs并且maxOccurs默认为1,这意味着不允许使用第二个元素Name,因此错误消息

元素"row"具有无效的子元素"Name"。

通过将maxOccurs="unbounded"添加到xs:any:进行更正

        <xs:any processContents="lax" macOccurs="unbounded"/>