XSD 限制数字或固定字符串
XSD restriction either number or fixed string
现在我正在尝试为我的 XML 写一个 XSD。我需要做的是编写一个 simpleType
定义,它允许输入 XML 数字(非十进制)或具有一种可能枚举的字符串 - "N/A"
。有哪些可能的解决方案?我不知道如何为一种类型设置两个可能的限制基础。
我想到的唯一选择是使用正则表达式和 xs:string 限制,但这对我来说似乎有点笨拙。
XSD
中的整数或固定字符串类型
您可以使用xs:union
将两个简单类型合并为一个:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="integerOrFixedString">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="N/A"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:schema>
您还可以通过 xs:pattern
:
按词法指定约束
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="integerOrFixedString">
<xs:restriction base="xs:string">
<xs:pattern value="[+-]?[0-9]+"/>
<xs:pattern value="N/A"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
现在我正在尝试为我的 XML 写一个 XSD。我需要做的是编写一个 simpleType
定义,它允许输入 XML 数字(非十进制)或具有一种可能枚举的字符串 - "N/A"
。有哪些可能的解决方案?我不知道如何为一种类型设置两个可能的限制基础。
我想到的唯一选择是使用正则表达式和 xs:string 限制,但这对我来说似乎有点笨拙。
XSD
中的整数或固定字符串类型您可以使用xs:union
将两个简单类型合并为一个:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="integerOrFixedString">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="N/A"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:schema>
您还可以通过 xs:pattern
:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="integerOrFixedString">
<xs:restriction base="xs:string">
<xs:pattern value="[+-]?[0-9]+"/>
<xs:pattern value="N/A"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>