我正在尝试使用以下模式通过XSD模式验证来验证XML元素,但它不起作用。必需的行为是允许除模式表达式中提到的字符以外的所有字符。
<xsd:pattern value="^[^><{}|^`\[\]\\\\]*$"/>
Valid data : TESTING
Invalid data : TE{ST]`I<NG
但是上面的模式在XSD中也会给出有效数据的验证错误(测试),但是如果我在Java regualr表达式匹配包中使用此模式,同样可以正常工作。请帮忙。
答案 0 :(得分:3)
与在此问题的多个注释和答案中所述不同,>
和<
之类的实体可以在XML Schema正则表达式中使用而没有任何问题。
但是,不支持插入符号(^
)和美元($
)之类的锚。
给出以下模式,并从模式中删除锚点:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<xsd:element name="test" type="test"/>
<xsd:simpleType name="test">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[^><{}|^`\[\]\\\\]*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
这将正确验证:
<test>testing</test>
而这些不会:
<test>{testing</test>
<test>>testing</test>