现在我正在尝试为我的XML编写XSD。我需要做的是编写一个simpleType
定义,它允许输入XML(非小数)或带有一个可能枚举的字符串 - "N/A"
。有哪些可能的解决方案?我不知道如何为一种类型设置两个可能的限制基础。
我想出的唯一选择是使用正则表达式和xs:string限制,但这对我来说似乎有些笨拙。
答案 0 :(得分:1)
您可以使用 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>