我需要用使用EXSLT的模式http://cpe.sunat.gob.pe/sites/default/files/inline-images/Reglas%20de%20Validaci%C3%B3n.zip验证一些XML。我也使用过Xalan和SaxonHE,但是这些方法不起作用,因为架构师使用的是regexp:match,我真的很难用包含正则表达式的模式验证XML:
<xsl:if test="./cbc:ID/@schemeID ='02' and not(regexp:match(./cbc:ID,'^[F][A-Z0-9]{3}-[0-9]{1,8}$|^(E001)-[0-9]{1,8}$|^[0-9]{1,4}-[0-9]{1,8}$'))">EXSLT的代码可在github https://github.com/bzerangue/exslt.org上使用。
我的问题是,是否有一种方法可以使用java或javascript使用这些架构验证XML。
请帮帮我!
发布于 2017-05-25 08:53:17
Saxon9HE是XSLT2.0处理器,因此它使用正则表达式支持XSLT和XPath函数,比如https://www.w3.org/TR/xpath-functions/#func-matches。您应该能够将例如not(regexp:match(./cbc:ID,'^[F][A-Z0-9]{3}-[0-9]{1,8}$|^(E001)-[0-9]{1,8}$|^[0-9]{1,4}-[0-9]{1,8}$'))的用法替换为not(matches(cbc:ID,'^[F][A-Z0-9]{3}-[0-9]{1,8}$|^(E001)-[0-9]{1,8}$|^[0-9]{1,4}-[0-9]{1,8}$'))。
https://stackoverflow.com/questions/44170141
复制相似问题