【问题标题】:xsd -xml regex validation not working for me using JAXBxsd -xml 正则表达式验证不适用于我使用 JAXB
【发布时间】:2013-05-01 22:19:24
【问题描述】:

我已经编写了一个简单的 XSD,我按照 XSD 模式编写了

<xsd:element name="xx">
<xsd:simpleType  >
    <xsd:restriction base="xsd:string">
        <xsd:pattern
            value="^[a-z]+">
        </xsd:pattern>
    </xsd:restriction>
</xsd:simpleType>
</xsd:element>

当我使用 jaxb 执行 XML-XSD 验证时,总是会遇到 XX 标记的错误。例如:

<xx>abcd</xx>

我不确定为什么会出现这种奇怪的行为?我希望我的正则表达式是正确的,上面的例子应该通过验证。我错过了什么吗?

【问题讨论】:

    标签: xml spring xsd jaxb


    【解决方案1】:

    您需要从表达式中删除锚 ^。 XSD 验证器不识别 ^ 或 $ 锚点,但将它们解释为文字字符。您可以通过将您的 XML 更改为 &lt;xx&gt;^abcd&lt;/xx&gt; 并针对您当前的 XSD 进行验证来验证这一点。

    这样做的原因是您的模式自动绑定到字符串的开头和结尾。与尝试匹配值的正则表达式不同,此正则表达式用于验证元素的全部内容,因此您必须创建一个模式来完全匹配字段中出现的所有内容。

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      相关资源
      最近更新 更多