具有一个元素的 XSD 在另一个重复元素之间出现一次以任何顺序

问题描述

我的 XML-Schema 中有这个问题,我希望一个元素重复,而另一个元素必须在重复元素之间或以任何顺序出现一次。

在 XML 中,我希望这发生:

<elements>
   <second>Desc</second>
   <second>Desc1</second>
   <first>Desc</main>
   <second>Description</second>
</elements>

意味着没有 second 出现 0 到 unboundedfirst 恰好一次的顺序。

我的 XML 架构:

<xs:choice maxOccurs="unbounded" minOccurs="0">
   <xs:element type="xs:string" name="second" maxOccurs="unbounded" minOccurs="0"/>
   <xs:element type="xs:string" name="first"/>
</xs:choice>

然而,此架构允许 firstsecond 出现 unbounded 次。我试过将 minOcurrsmaxOcurrsfirst^(?:[^:/]*[:/])?\K.+ 设置为 1 但这并没有改变任何东西。有什么办法可以达到我想要的结果吗?

解决方法

您可以使用内容模型

sequence 
   A min=0 max=unbounded
   B
   A min=0 max=unbounded