我正在尝试创建一个 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/