我想知道我是否遗漏了一些明显的东西。
我有一个数字列表,可能包括范围(想想打印对话框的打印页面选项)。
理想情况下,我希望最终的XML输出看起来像这样,页面和pageRange按顺序排列。
<pages>
<page> 1</page>
<pageRange><start>3</start><end>6</end></pageRange>
<page> 34</page>
</pages>
我需要在模式中添加什么才能允许这样做?
从我看到的: 具有多页和页面的序列允许的范围不允许交替。 选择只允许其中一个。
我尝试搞乱所有人,但我没有让它正确验证。
我的短期解决方案是拥有一系列范围,并强制单个数字进入范围,但似乎可能很麻烦。我错过了什么吗?
答案 0 :(得分:1)
试试这个......
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="pages">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="page" type="xs:unsignedInt" />
<xs:element name="pageRange">
<xs:complexType>
<xs:sequence>
<xs:element name="start" type="xs:unsignedInt" />
<xs:element name="end" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>