我想用XSD验证一个如下所示的XML:
<list>
<item />
<selecteditem />
<item />
<item />
</list>
LIST可以包含多个ITEM,但只有一个SELECTEDITEM可以放在LIST元素的任何位置。
但是,我没有在XSD中找到任何可以让我验证的表达,当我尝试一些“天真”尝试时
<xs:element name="list">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="item" type="option" maxOccurs="unbounded" minOccurs="0" />
<xs:element name="selecteditem" type="option" maxOccurs="1" minOccurs="0" />
<xs:element name="item" type="option" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
我收到一条消息,表明我的模型不是决定论者,这让我怀疑我正在尝试的实际上是不可能的。
任何人都可以告诉我是否有办法验证这个或者XSD是不是要这样做(以及我做错了什么)。
感谢。
编辑:这是我尝试过的另一个解决方案:<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element name="item" maxOccurs="unbounded" minOccurs="0" />
<xs:sequence maxOccurs="1" minOccurs="0">
<xs:element name="itemselected" maxOccurs="1" minOccurs="1" />
<xs:element name="item" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
答案 0 :(得分:1)
我认为它可以表示为
item* (selectedItem item*)?