Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xsd-xml正则表达式验证不适用于使用JAXB的我_Xml_Spring_Xsd_Jaxb - Fatal编程技术网

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

xsd-xml正则表达式验证不适用于使用JAXB的我,xml,spring,xsd,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

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

我不知道为什么会有这种奇怪的行为?我希望我的正则表达式是正确的,上面的示例应该通过验证。我是否遗漏了任何内容?

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

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