我的问题(或问题)以输入为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