如何在XML模式中使用名称但任何内容指定子元素?

时间:2010-04-19 12:59:49

标签: c# xsd

我正在尝试编写一些XML模式代码,以指定特定元素“abc”可能具有名为“xyz”的子元素,并且该元素可以具有任何属性和任何子元素。

目前我有这个:

    <xs:element name="abc">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="xyz">
            <xs:complexType>
              <xs:sequence>
                <xs:any/>
              </xs:sequence>
              <xs:anyAttribute/>               
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>

但是当我针对模式验证我的XML时,我得到了关于xyz元素的子元素的验证失败。

1 个答案:

答案 0 :(得分:1)

您的xs:any没有附加任何信息,因此它正在寻找架构定义的元素。如果你想对子元素的解释松懈,试试这个:

<xs:element name="abc">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="xyz">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" />
          </xs:sequence>
          <xs:anyAttribute/>               
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

这应该让你过去验证。如果您对xyz内容的格式良好有任何期望,则可以使用xs:any的namespace属性包含命名空间,并为该信息引入另一个模式。

祝你好运,我希望这会有所帮助!