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