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