如何使用无限制的顺序和计数的复杂/混合类型的子元素?

时间:2010-05-05 22:41:52

标签: xml validation xsd

我正在使用XML,其中一些元素将包含带有附加标记的文本。这与W3Schools处的此示例类似。但是,我需要标记标记能够以任何顺序出现,并且可能不止一次。

修改他们的示例以进行说明:

<letter>
  Dear Mr.<name>John Smith</name>.
  Your order <orderid>1032</orderid>
  will be shipped on <shipdate>2001-07-13</shipdate>.
  Thank you, <name>Bob Adams</name>
</letter>

由于第二个<name>元素,W3Schools提供的所有选项(在链接示例后面的页面上)都不允许使用此XML。他们对“指标”的解释和我的测试是一致的。

<xs:sequence> - 违反了元素顺序

<xs:choice> - 使用了多种元素。

<xs:all> - maxOccurs被限制为“1”。

这似乎应该是基本的,毕竟XHTML允许这样的事情。如何定义我的架构以允许这个?

1 个答案:

答案 0 :(得分:0)

经过更多的搜索,我找到了[这个] [1]的答案,这个问题解决了。 @jelovirt upvoted!

基本上,结合sequencechoice指标。

<xs:complexType name="textItem" mixed="true">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="tag_1" type="xs:string" />
    ...
    <xs:element name="tag_n" type="xs:string" />
  </xs:choice>
</xs:complexType>