Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Java XSD中的模式验证不同吗?_Java_Regex_Xml_Xsd_Xsd Validation - Fatal编程技术网

Java XSD中的模式验证不同吗?

Java XSD中的模式验证不同吗?,java,regex,xml,xsd,xsd-validation,Java,Regex,Xml,Xsd,Xsd Validation,我试图使用下面的模式用XSD模式验证XML元素,但它不起作用。所需的行为是允许除模式表达式中提到的字符外的所有字符 <xsd:pattern value="^[^&gt;&lt;{}|^`\[\]\\\\]*$"/> Valid data : TESTING Invalid data : TE{ST]`I<NG 有效数据:测试 无效数据:TE{ST]`I与此问题的多个注释和答案中所述的不同,像和这样的实体可以在XML模式正则表达式中使用而不会出现任何问题

我试图使用下面的模式用XSD模式验证XML元素,但它不起作用。所需的行为是允许除模式表达式中提到的字符外的所有字符

<xsd:pattern value="^[^&gt;&lt;{}|^`\[\]\\\\]*$"/>

Valid data : TESTING
Invalid data : TE{ST]`I<NG

有效数据:测试

无效数据:TE{ST]`I与此问题的多个注释和答案中所述的不同,像
这样的实体可以在XML模式正则表达式中使用而不会出现任何问题

但是,不支持插入符号(
^
)和美元(
$
)等锚点

给定以下模式,从模式中移除锚定:

<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="[^&gt;&lt;{}|^`\[\]\\\\]*"/> 
    </xsd:restriction> 
  </xsd:simpleType> 
</xsd:schema>

这将正确验证:

<test>testing</test>
测试
虽然这些措施不会:

<test>{testing</test>

<test>&gt;testing</test>
{测试
测试

您的角色类可能无效,或者至少没有按照您的想法进行操作。
[]
意味着匹配
&
g
t
中的任何一个。这并不意味着匹配HTML符号
@TimBiegeleisen您不能在XML中使用
文本。需要改用实体。@RobbyCornelissen好的……但该字符类有效吗?我从未见过正则表达式的风格它允许使用多个字符。@TimBiegeleisen该字符类是有效的,并将按预期工作。问题在于
^
$
锚。我每天都会学到一些新东西。^^。因此,解析器可能会在内部将
转换为
,以便在类中使用。