XSD限制数字或固定字符串

时间:2016-05-24 09:19:48

标签: xml xsd xsd-validation xml-validation

现在我正在尝试为我的XML编写XSD。我需要做的是编写一个simpleType定义,它允许输入XML(非小数)或带有一个可能枚举的字符串 - "N/A"。有哪些可能的解决方案?我不知道如何为一种类型设置两个可能的限制基础。

我想出的唯一选择是使用正则表达式和xs:string限制,但这对我来说似乎有些笨拙。

1 个答案:

答案 0 :(得分:1)

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>