我的问题(或问题)以空元素为中心,这些元素被输入为xs:integer.我需要允许空元素,所以我使用union来允许空元素或有效整数作为值,如下面的模式所示.但是,我的架构具有双重角色,还需要导入第三方软件,该软件需要String,Float,Integer或Date等数据类型.如果我使用union方法为所有整数编码模式,则它们不会在软件中键入为整数.除了允许空元素用于整数数据类型的union方法之外,还有其他方法吗?我想拥有一个XSD但如果需要的话可以有两个XSD.
给出XML样本:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<division>
<department>
<roles/>
<employees>7</employees>
</department>
</division>
</company>
Run Code Online (Sandbox Code Playgroud)
和架构:
<?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>
Run Code Online (Sandbox Code Playgroud)