2
我需要創建一個XSD 1.0,驗證XML文件。隨機順序和maxOccurs中的元素> 1
驗證將使用lxml.etree從蟒,並且該工具被支撐只是XML模式1.0(lxml with schema 1.1)
,我需要使用的結構是類型:
item
| owners*
| config+
| | config_id
| | tests*
| | picked?
| | capability*
| | | name
| | | value
二手符號是:
*
的的Elemen t可以出現零次或多次。+
元素可以發生一次或多次。?
該元素是可選的。
配置標籤中的元素可以以任意順序,這意味着我不能使用<sequence>
指示器。 <all>
指標給我的隨機順序,但在這種情況下,maxOccurs
是1. <choice>
指標與maxOccurs="unbounded"
將給我的隨機順序和元素的多個數量,但不會有元素的底限制。
我的XSD文件看起來像:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--Schema version: 1.0, date: 29-02-2016-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of complex types -->
<xs:complexType name="capability_type">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="config_type">
<xs:all>
<xs:element name="config_id" type="xs:string" />
<xs:element name="tests" type="xs:string" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="picked" type="xs:string" minOccurs="0" />
<xs:element name="capability" type="capability_type"
minOccurs="0" maxOccurs="unbounded" />
</xs:all>
</xs:complexType>
<xs:complexType name="item_type">
<xs:sequence>
<xs:element name="owners" type="xs:string" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="config" type="config_type" minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- definition of schema -->
<xs:element name="item" type="item_type" />
</xs:schema>
使用這個模式我收到錯誤:
element element: Schemas parser error : Element '{ http://www.w3.org/2001/XMLSchema }element': Invalid value for maxOccurs (must be 0 or 1).
是否有我的問題,任何的替代品?
你知道任何XSD 1.1驗證器在Linux中也是免費的嗎? –
請參見[Linux命令行工具驗證XSD 1.1?](http://stackoverflow.com/questions/18782706/linux-command-line-tool-validating-xsd-1-1) – kjhughes