XSD -xml正则表达式验证不使用JAXB

问题描述:

为我工作

我写了一个简单的XSD,我已经写了下面的XSD模式XSD -xml正则表达式验证不使用JAXB

<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总是遇到XX标签的错误执行XML,XSD验证。例如:

<xx>abcd</xx> 

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

您需要从表达式中移除锚点^。 XSD验证程序不识别^或$锚,但将它们解释为文字字符。您可以通过将XML更改为<xx>^abcd</xx>并根据当前XSD对其进行验证来验证此情况。

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