我想创建一个XML架构(XSD文件)来应用于XML文档。让我们考虑以下XML文档:
<root>
<a />
<b />
<c />
<a />
<a />
<b />
</root>
在遵守以下所需约束的情况下:
- <root>是根元素
- <a>,<b>和<c>元素可以出现无限次
- <a>,<b>和<c>元素不分组。例如,元素可以在<b>元素
如果我必须创建一个XML模式来应用于示例XML文档,我将从以下内容开始:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://doesnotmatter.com/"
xmlns="http://doesnotmatter.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root"
min="1"
max="1">
<complexType>
<!-- ? -->
</complexType>
</xs:element>
</xs:schema>
我不知道如何填充<complexType>元素
我不能使用<sequence>元素,因为第三个约束
我怎样才能实现我的模式来尊重所有3个约束。
编辑
选择因素是我问题的关键
以下是对应于我上述需求的XML模式:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://doesnotmatter.com/"
xmlns="http://doesnotmatter.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="a" />
<xs:element name="b" />
<xs:element name="c" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
所以,root的模型是:从这些可能性中反复选择:a、b、c。是这样吗?关键词是choose as in choice。也许我错过了什么,但答案似乎很明显。