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

标签 xml spring xsd 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>

我不确定为什么会出现这种奇怪的行为?我希望我的正则表达式是正确的并且上面的示例应该通过验证。我是否遗漏了什么?

最佳答案

您需要从表达式中删除 anchor ^。 XSD 验证器不识别 ^ 或 $ anchor ,而是将它们解释为文字字符。您可以通过将 XML 更改为 <xx>^abcd</xx> 来验证这一点并根据您当前的 XSD 对其进行验证。

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

关于xml - xsd -xml 正则表达式验证不适用于使用 JAXB 的我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427913/

相关文章:

javascript - 向用户显示表单发布方法后得到的解析结果

xml - 可绘制 xml 中的 Android 多笔划框

jaxb - XMI 2.1.1 的 XSD

xsd - 使用 dom4j DOMDocument 提供 validator.validate(DOMSource) 在 java 1.6 中失败(xsi :noNamespaceSchemaLocation is not allowed), 在 1.5 中工作)

XML Sitemaps - 创建和管理 XML Sitemaps 有充分的理由吗?

java - 二进制 XML 文件行 #12 : Error inflating class com. android.phone91.DialPadView

java - AnnotationConfigApplicationContext 注册并刷新另一个配置类

java - Spring IoC 和 Java EE

java - 使用 Spring 与 Java DSL 配置集成连接到 Weblogic JMS 队列

java - 根据 XSD 验证多个 XML 文件的最佳方法是什么?