我的问题(或问题)以空元素为中心,这些元素被输入为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)
sho*_*222 13
你有没有尝试过
<xs:element name="roles" type="xs:integer" nillable="true"/>
Run Code Online (Sandbox Code Playgroud)
小智 9
你要做的是为同一个元素分配两个限制,再加上它们的联合,如下例所示:
<xs:element name='job_code'>
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:length value='0'/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base='xs:integer'>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
使用此限制,您可以告诉XML验证允许任何整数值,并允许该元素为空.
| 归档时间: |
|
| 查看次数: |
46774 次 |
| 最近记录: |