XSD模式限制。如何获得速记

时间:2019-01-31 14:03:43

标签: regex xml xsd

我有一个XSD语法,其中一个SimpleType应该限制为6个逗号分隔的数值。也就是说,每个元素都具有以下形式:

-?\d*\.?\d+\s*

因为我需要一个6元组,所以我可以编写以下模式:

<xs:pattern value="-?\d*\.?\d+\s*,\s*-?\d*\.?\d+\s*,\s*-?\d*\.?\d+\s*,\s*-?\d*\.?\d+\s*,\s*-?\d*\.?\d+\s*,\s*-?\d*\.?\d+\s*"/>

我想做短。我尝试了以下模式:

<xs:pattern value="(-?\d*\.?\d+\s*,){5}\s*-?\d*\.?\d+\s*" />

但是似乎是错误的。我无法识别该错误。谁能告诉我为什么这是错误的吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

它以什么方式失败?

它对我有用(使用Saxon作为模式验证器)。有了模式

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/">
  <xs:element name="top">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:pattern value="(-?\d*\.?\d+\s*,){5}\s*-?\d*\.?\d+\s*" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>

此文档有效:

<top>1,2,3,4,5,6</top>

这是无效的:

<top>1,2,3,4,5</top>