微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xsd -xml正则表达式验证不适合我使用JAXB

我编写了一个简单的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>

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

解决方法

您需要从表达式中删除锚点^. XSD验证器无法识别^或$锚点,但将它们解释为文字字符.您可以通过将XML更改为< xx> ^ abcd< / xx>来验证这一点.并根据您当前的XSD验证它.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。