首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Saxon无法编译xPath

Saxon无法编译xPath
EN

Stack Overflow用户
提问于 2016-04-05 22:18:05
回答 1查看 239关注 0票数 1

我构建了saxon9-7-0-4source.zip,并尝试基于以下xml在dom4j文档中执行xPath .//item[@name='entry']//property[matches(@value,'test[0-9]{1,2}$')]/..

代码语言:javascript
复制
<root>
<item name="abc">
  <iitem>
    <property value="test"/>
  </iitem>
</item>
<item name="entry">
  <iitem>
    <property value="test"/>
  </iitem>
  <iitem>
    <iiitem>
      <property value="test12"/>
    </iiitem>
  </iitem>
  <iitem>
    <property value="123"/>
  </iitem>
</item>
</root>

我在http://www.qutoric.com/xslt/analyser/xpathtool.html网站上对xPath进行了在线测试,这是我所期待的

但是如果我在我的java代码中尝试同样的方法

代码语言:javascript
复制
        Processor proc = new Processor(false);
        proc.getUnderlyingConfiguration().registerExternalObjectModel(new DOM4JObjectModel());
        DocumentBuilder db = proc.newDocumentBuilder();
        XdmNode xdmDoc = db.wrap(doc4j);
        XPathCompiler xpath = proc.newXPathCompiler();
        String path=".//item[@name='entry']//property[matches(@value,'test[0-9]{1,2}$')]/..";
        XPathExecutable viewPath = xpath.compile(path);

我在线程"main“中得到一个意外的错误异常。

代码语言:javascript
复制
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Cannot instantiate the type SystemFunctionCall

    at net.sf.saxon.functions.SystemFunction.makeFunctionCall(SystemFunction.java:94)
    at net.sf.saxon.functions.RegexFunction.makeFunctionCall(RegexFunction.java:69)
    at net.sf.saxon.functions.RegexFunctionSansFlags.makeFunctionCall(RegexFunctionSansFlags.java:49)
    at net.sf.saxon.functions.SystemFunctionLibrary.bind(SystemFunctionLibrary.java:91)
    at net.sf.saxon.functions.FunctionLibraryList.bind(FunctionLibraryList.java:105)
    at net.sf.saxon.expr.parser.XPathParser.parseFunctionCall(XPathParser.java:3015)
    at net.sf.saxon.expr.parser.XPathParser.parseBasicStep(XPathParser.java:2005)
    at net.sf.saxon.expr.parser.XPathParser.parseStepExpression(XPathParser.java:1890)
    at net.sf.saxon.expr.parser.XPathParser.parseRelativePath(XPathParser.java:1815)
    at net.sf.saxon.expr.parser.XPathParser.parsePathExpression(XPathParser.java:1777)
    at net.sf.saxon.expr.parser.XPathParser.parseSimpleMappingExpression(XPathParser.java:1791)
    at net.sf.saxon.expr.parser.XPathParser.parseUnaryExpression(XPathParser.java:1666)
    at net.sf.saxon.expr.parser.XPathParser.parseExprSingle(XPathParser.java:653)
    at net.sf.saxon.expr.parser.XPathParser.parseExpression(XPathParser.java:592)
    at net.sf.saxon.expr.parser.XPathParser.parsePredicate(XPathParser.java:1958)
    at net.sf.saxon.expr.parser.XPathParser.parseStepExpression(XPathParser.java:1900)
    at net.sf.saxon.expr.parser.XPathParser.parseRelativePath(XPathParser.java:1820)
    at net.sf.saxon.expr.parser.XPathParser.parsePathExpression(XPathParser.java:1777)
    at net.sf.saxon.expr.parser.XPathParser.parseSimpleMappingExpression(XPathParser.java:1791)
    at net.sf.saxon.expr.parser.XPathParser.parseUnaryExpression(XPathParser.java:1666)
    at net.sf.saxon.expr.parser.XPathParser.parseExprSingle(XPathParser.java:653)
    at net.sf.saxon.expr.parser.XPathParser.parseExpression(XPathParser.java:592)
    at net.sf.saxon.expr.parser.XPathParser.parse(XPathParser.java:464)
    at net.sf.saxon.expr.parser.ExpressionTool.make(ExpressionTool.java:98)
    at net.sf.saxon.sxpath.XPathEvaluator.createExpression(XPathEvaluator.java:144)
    at net.sf.saxon.s9api.XPathCompiler.internalCompile(XPathCompiler.java:506)
    at net.sf.saxon.s9api.XPathCompiler.compile(XPathCompiler.java:481)
    at xslt.XSLT.main(XSLT.java:35)

如果我试图通过XPathExecutable viewPath = xpath.compile(path);编译xPath,就会出现这个错误。

EN

回答 1

Stack Overflow用户

发布于 2016-04-07 18:27:10

我找出了这个异常的原因。我的eclipse版本太老了,就像here描述的那样。我必须在java8上编译saxon 9.7。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36429018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档