2
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="size" type="PatternType" />
  <xs:simpleType name="PatternType">
    <xs:restriction base="xs:string">                              
      <xs:pattern value="[T][0-9]{1,2}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

我需要为轨道 ID T1、T2 等创建一个模式,并希望限制为 T20。但如果我按照模式 <xs:pattern value="[T][0-9]{1,2}"/>,它也允许 T99。你知道如何解决这个问题吗?

4

2 回答 2

3

以下 XSD 将允许size具有T1, T2, T3, ...的值T20

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="size" type="PatternType"/>
  <xs:simpleType name="PatternType">
    <xs:restriction base="xs:string">                              
      <xs:pattern value="T1?\d"/>
      <xs:pattern value="T20"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
于 2016-08-31T04:05:32.777 回答
1

在 XSD 1.1 当然你可以写

<xs:assertion test="number(substring-after($value)) = 1 to 20"/>
于 2016-08-31T07:24:44.237 回答