xml - <any> 在 XSD 中不起作用?

标签 xml xsd

我正在尝试创建一个 xml 架构 (xsd) 来验证 xml 文件。

<a>
    <b>
        <c>...</c>
        <d>...</d>
    </b>
    <b>
        <c>...</c>
        <e>...</e>
            <d>...</d>
    </b>
<a>

1 个 a 元素。 具有一些内容的多个 b 元素。

我想验证文件中是否存在 a,以及 b 出现 1 次或多次。我不想知道 b 里面是什么。

所以这就是我的尝试:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="a">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="b" minOccurs="1" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="b">
        <xs:complexType>
            <xs:sequence>
                <xs:any minOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

我希望 any -element 会变魔术,但事实并非如此。我做错了什么?

编辑: XmlSpy 给我这个错误:元素“c”未在 DTD/架构中定义。

最佳答案

您不需要架构中的附加“b”,我认为您正在寻找的是:

    <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="a">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="b" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:any maxOccurs="unbounded" minOccurs="1" processContents="lax"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

这表明您有 <a>作为根节点,它可以包含一个或多个<b>

编辑:抱歉,没有阅读完整的问题 - 请尝试上面的内容!

第二次编辑:上面的另一个尝试!

关于xml - <any> 在 XSD 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458848/

相关文章:

c# - 解析 XSD 架构时出错 - 未定义的复杂类型

java - 使用 Maven 生成 Jaxb 类时包被删除,生成的 Maven 包名称不正确

c# - 发送和接收 XML 数据

java - XML 配置与基于注释的配置

xml - 在 JSP 文件中导入带有 JSTL 核心的 XML 文件时,请求的资源不可用

android:如何从 strings.xml 中的字符串数组中获取项目的属性

Java 简单 XML 库 : set 'strict' and 'required' values to false

c++ - 使用 C++ 和 XML 数据绑定(bind)的开源项目

java - 使用绑定(bind)将所有类型转换为 jaxb 中的字符串

android - 从图库中获取选定的图像到 ImageView