XSD 模式限制。如何获得 shorthand

XSD Pattern restriction. How to get a shorthand

我有一个 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*" />

不过好像不对。我无法识别错误。谁能告诉我为什么这是错的?

提前致谢

失败的原因是什么?

它对我有用(使用 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>