我的問題(或問題)以輸入爲xs:integer的空元素爲中心。我需要允許空元素,所以我使用聯合來允許空元素或有效整數作爲值,如下面的架構中所示。但是,我的模式擔當雙重角色,並且需要導入到期望數據類型爲String,Float,Integer或Date的第三方軟件中。如果我使用union方法爲所有整數編碼模式,它們將不會在軟件中鍵入爲整數。除了允許整數數據類型爲空元素的聯合方法之外,還有其他方法嗎?我想只有一個XSD,但可以有兩個,如果這是需要發生的。XSD:在聲明xs時允許空值的選項:整數數據類型
的鑑於XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<division>
<department>
<roles/>
<employees>7</employees>
</department>
</division>
</company>
和架構:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:simpleType name="nullval">
<xs:union memberTypes="IntegerType empty"/>
</xs:simpleType>
<xs:simpleType name="IntegerType">
<xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:simpleType name="empty">
<xs:restriction base="xs:string">
<xs:maxLength value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="company">
<xs:complexType>
<xs:sequence>
<xs:element name="division">
<xs:complexType>
<xs:sequence>
<xs:element name="department" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<!-- elements may appear in any order -->
<xs:all minOccurs="0" maxOccurs="1">
<xs:element name="roles" type="nullval"/>
<xs:element name="employees" type="xs:integer"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
是的,我試圖nillable =「true」和minOccurs =「0」,它沒有工作(與撒克遜使用XMLSpy)。 – johkar 2010-11-30 15:53:50
您是否對發送的XML有任何控制權?你可以在角色元素上設置xsi:nil =「true」嗎? (參考http://www.w3.org/TR/xmlschema11-1/#xsi_nil) – sho222 2010-12-01 20:16:51