Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 包含回车符(&;#13)时模式的XSD验证问题_Java_Xml_Design Patterns_Xsd Validation_Carriage Return - Fatal编程技术网

Java 包含回车符(&;#13)时模式的XSD验证问题

Java 包含回车符(&;#13)时模式的XSD验证问题,java,xml,design-patterns,xsd-validation,carriage-return,Java,Xml,Design Patterns,Xsd Validation,Carriage Return,我必须检查大型XML文件中URL的有效性 我必须使用此模式检查URL是否有效: <xs:simpleType name="url"> <xs:restriction base="xs:string"> <xs:pattern value="https?://([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?((/|\?

我必须检查大型XML文件中URL的有效性

我必须使用此模式检查URL是否有效:

<xs:simpleType name="url">
    <xs:restriction base="xs:string">
         <xs:pattern value="https?://([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?((/|\?).*)?"/>
    </xs:restriction>
  </xs:simpleType>
(注意:NamespaceFilter只是一个扩展XMLFilterImpl的类,以避免检查XML文件的命名空间)

不幸的是,在XML文件中,有些URL带有字符“ ;”,表示回车: 包含nannoyingcarriend返回

当我使用包含此类URL的XML文件运行代码时,会出现以下错误:

org.xml.sax.SAXParseException; lineNumber: 238719; columnNumber: 129; cvc-pattern-valid: Value 'http://xxx.yyy.zz/exampleofurl
containinganannoyingcarriagereturn' is not facet-valid with respect to pattern 'https?://([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?((/|\?).*)?' for type 'url'.
XSD验证器似乎将“ ;”解释为回车符,并在应用该模式时导致此问题

有没有办法强制验证器不解释这个ASCII码


在我看来,URL是有效的,并且符合模式。

您使用一个包含五个字符序列的字符串测试了正则表达式,这是可以接受的,因为这五个字符中的每一个都与元字符“”匹配

但是在XML中,五个字符的序列

表示单个字符,代码点13。这是元字符“.”不匹配的两个字符之一(另一个是代码点10)


你问“有没有办法强迫验证器不解释这个ASCII码?”答案是否定的。XSD验证总是对解析的XML进行操作,XML解析会扩展实体引用。

我不明白。字符串包含模式不允许的字符。什么使你认为它是有效的?这个例子使我认为它应该是有效的。但也许我错了。
org.xml.sax.SAXParseException; lineNumber: 238719; columnNumber: 129; cvc-pattern-valid: Value 'http://xxx.yyy.zz/exampleofurl
containinganannoyingcarriagereturn' is not facet-valid with respect to pattern 'https?://([^/:]+\.[a-zA-Z]{2,10}|([0-9]{1,3}\.){3}[0-9]{1,3})(:[0-9]+)?((/|\?).*)?' for type 'url'.