我具有以下XSD类型:
<xs:simpleType name="MyType">
<xs:restriction base="xs:token">
<xs:maxLength value="256" />
<xs:pattern value="[A-Z^-z-]+" />
</xs:restriction>
</xs:simpleType>
在我的xml文件中,我有一个PECDestinatario条目,其类型为MyType。 它的值为“ test-value”。 当我使用xmllint针对xsd进行验证时,它失败并显示以下错误:
元素PECDestinatario:模式有效性错误:元素'PECDestinatario':[方面'模式']模式'[A-Z ^ -z-] +'不接受值'test-value'
如果我从“测试值”中减去负号,则表示效果很好。 似乎回旋音是模式中的一个问题-但是为什么(不在括号的开头)?
答案 0 :(得分:1)
我认为可能是字符范围内的连字符而不是抑扬音。字符范围内连字符的XSD 1.0规则非常混乱和混乱,而且不同供应商对它们的解释也不同(Microsoft甚至没有尝试,它们只是使用来自.NET regex引擎的规则)。
尝试将其写为'[A-Z^-z\-]+
,以获得更好的可移植性。