c# - 如何在 XML 模式中指定名称但内容不限的子元素?

标签 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 元素的子元素。

最佳答案

您的 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 的命名空间属性包含一个命名空间,并为该信息引入另一个架构。

祝你好运,希望对你有所帮助!

关于c# - 如何在 XML 模式中指定名称但内容不限的子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667546/

相关文章:

java - 在 Eclipse XML 编辑器中通过 XSLT 或 Schematron 进行 XML 验证?

java - 为 http ://schemas. opengis.net/wfs/1.1.0/wfs.xsd 生成 JAXB 类

c# - 如何消除错误 "XamlParseException: Set connectionId threw an exception"?

c# - 位图无法返回?

c# - CheckBoxList 绑定(bind)需要第二个集合来确定选中状态

xaml - FlowDocument XAML 是否有 XSD?

xml - 是否有任何允许指定约束(如无循环引用)的 XML 模式语言?

xml - 想要为 XML 文件编写架构

c# - 更改窗口内容 (WPF)

c# - Asp.net Identity - 如何在不考虑鉴别器的情况下登录