我有一个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*" />
但是似乎是错误的。我无法识别该错误。谁能告诉我为什么这是错误的吗?
预先感谢
答案 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>