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>