[英]XSD, create schema with unordered elements that also contains list
我有那种XML:
<HEAD>
<BUYER>1111</BUYER>
<RECIPIENT>2222</RECIPIENT>
<ADDRESS>33333</ADDRESS>
<POSITION>
<NUMBER>1</NUMBER>
<NAME>Name 1</NAME>
</POSITION>
<POSITION>
<NUMBER>2</NUMBER>
<NAME>Name 2</NAME>
</POSITION>
<POSITION>
<NUMBER>3</NUMBER>
<NAME>Name 3</NAME>
</POSITION>
</HEAD>
BUYER
, RECIPIENT
, ADDRESS
标签可以按任何顺序放置,但在 position 标签之前。 POSITION
中的标签可以按任意顺序排列。
我试图使用all
标签来描述这样的:
<xs:element name="HEAD">
<xs:complexType>
<xs:all>
<xs:element name="BUYER">
<xs:element name="RECIPIENT">
<xs:element name="ADDRESS">
<xs:element name="POSITION" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="NUMBER">
<xs:element name="NAME">
</xs:all>
<xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
但是,我发现unbounded
all
无法使用。
是否有可能以某种方式制作具有数组无序标签的模式?
在 XSD 1.0 中,实现此目的的唯一方法是枚举所有允许的 BUYER、RECIPIENT 和 ADDRESS 顺序。
在 XSD 1.1 中,您可以使用 xs:all 来允许元素以任何顺序出现,然后使用断言对其进行约束: test="every $P in POSITION satisfies empty($P/following-sibling::*[not(self::POSITION)])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.