是否可以在XML Schema中交替使用两种类型

时间:2010-04-21 15:14:53

标签: xml xsd

我想知道我是否遗漏了一些明显的东西。

我有一个数字列表,可能包括范围(想想打印对话框的打印页面选项)。

理想情况下,我希望最终的XML输出看起来像这样,页面和pageRange按顺序排列。

  <pages>
 <page> 1</page>
   <pageRange><start>3</start><end>6</end></pageRange>
   <page> 34</page>
</pages>

我需要在模式中添加什么才能允许这样做?

从我看到的:    具有多页和页面的序列允许的范围不允许交替。    选择只允许其中一个。

我尝试搞乱所有人,但我没有让它正确验证。

我的短期解决方案是拥有一系列范围,并强制单个数字进入范围,但似乎可能很麻烦。我错过了什么吗?

1 个答案:

答案 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>