[英]xml element validation against xsd - how to define unordered element?
現在,我正在驗證這樣的XML
:
<?xml version="1.0" encoding="utf-8"?>
<all>
<allElem>
<a>12345</a>
<b>2</b>
<c>3</c>
<d>
<d1>4</d1>
<d2>5</d2>
<d3>6</d3>
</d>
<d>
<d1>7</d1>
<d2>8</d2>
<d3>9</d3>
</d>
</allElem>
</all>
我寫了一個簡單的XSD
像這樣:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="all">
<xs:complexType>
<xs:sequence>
<xs:element name="allElem" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:string"/>
<xs:element name="c" type="xs:string"/>
<xs:element name="d" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="d1" type="xs:string"/>
<xs:element name="d2" type="xs:string"/>
<xs:element name="d3" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我的問題是:我正在使用xs:sequence
,但是我不希望對xml元素進行排序,所以我不能使用xs:all,因為它只允許max出現一次,但是我的xml元素為“ d”應該可以出現多次。 xsd中是否有解決方案,我可以定義一個無序元素出現一次或多次出現? 換句話說,我想知道是否有一個xsd標記可以定義可以出現多次的無序元素。
在XSD 1.0中:
您可以使用xs:all代替xs:sequence,但是每個元素只能出現(0或1)次。
您可以將xs:choice與minOccurs = 0 maxOccurs = unbounded一起使用,但是每個元素可以出現任意次
在XSD 1.1中:
XSD 1.1當前在Xerces(測試版)和Saxon(當前版本的Saxon-EE 9.5)中可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.