XSD模式验证问题

时间:2020-10-20 14:18:00

标签: xml xsd xsd-validation

我具有以下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'

如果我从“测试值”中减去负号,则表示效果很好。 似乎回旋音是模式中的一个问题-但是为什么(不在括号的开头)?

1 个答案:

答案 0 :(得分:1)

我认为可能是字符范围内的连字符而不是抑扬音。字符范围内连字符的XSD 1.0规则非常混乱和混乱,而且不同供应商对它们的解释也不同(Microsoft甚至没有尝试,它们只是使用来自.NET regex引擎的规则)。

尝试将其写为'[A-Z^-z\-]+,以获得更好的可移植性。

相关问题