XMLSchema中complexTypes的联合

时间:2011-06-05 14:06:05

标签: xml xsd

我正在编写架构,发现自己无法指定允许两者的XML架构

<root>
  <content>icecream</content>
</root>

<root>
  <content><list>icecream</list></content>
</root>

并且不允许(混合内容)

<root>
  <content>blabla<list>icecream</list>hehe</content>
</root>

我首先想到我可以通过在具有相同名称和不同类型的元素之间进行选择来实现此目的,但是失败了。我也尝试过union,但由于这只是为简单类型定义的,所以我想知道:它是否可能?

2 个答案:

答案 0 :(得分:2)

(1)和(2)可能具有混合含量,这与(3)不相容。因此,这是不可能的。

答案 1 :(得分:2)

在XSD 1.1中,您可以使用允许混合内容的复杂类型,然后使用断言对其进行限制,例如:

<xs:assert test="exists(list) != exists(text())"