【问题标题】:XPath Java library (evaluate functions also)XPath Java 库(也评估函数)
【发布时间】:2019-09-06 05:58:23
【问题描述】:

我正在使用 Saxon-HE 来解析 XPath 表达式

例如:有xpath表达式:

string(xfi:identifier-scheme(xfi:identifier(/jenv-bw2-i:LegalEntityName)))
eq 'http://www.kvk.nl/kvk-id'

它有自定义功能,可以在http://www.xbrl.org/Specification/XF-PWD-2006-12-07.htm#_Toc152670686找到

我尝试使用 Saxon-HE 但出现错误:

net.sf.saxon.trans.XPathException:找不到名为 Q{http://www.xbrl.org/2005/function/instance}identifier() 的 1-argument 函数

我该如何解决这个问题?我是否需要自己实现这些功能,或者 Saxon-HE 是否能够评估它,但可能是,我在这里做错了什么? 我也尝试为此使用 Jaxen

问候,

文奇

【问题讨论】:

  • 您希望如何提供自定义函数的代码? Saxon HE 允许您在 Java 中实现它们,请参阅 saxonica.com/html/documentation/javadoc/net/sf/saxon/s9api/… 和 saxonica.com/html/documentation/javadoc/net/sf/saxon/s9api/… 以及文档 saxonica.com/html/documentation/extensibility/…
  • 对不起,我不知道为什么这被关闭为题外话,因为这对我来说似乎是一个完全合理的问题 - 可以通过提供更多信息来改进这个问题,但它是完全可以理解的你不知道需要什么信息。所以我提名这个重新开放。
  • 同时,我将尝试在评论中简要回答。 Saxon 对 XBRL 规范中定义的函数一无所知。您将需要找到提供这些功能实现的产品。此外,它需要提供一个与 Saxon 一起工作的实现。当然,您可以自己实现这些功能,在这种情况下,Saxon 文档会告诉您如何实现。但这听起来需要做很多工作,我希望有 XBRL 包可以为您做这件事。搜索 XBRL 软件包。
  • @MichaelKay 这个问题在 OP 的编辑之前已经关闭,当时它仍然主要是一个资源请求。无论如何,它刚刚重新打开。
  • 我认为 OP 没有意识到这是一个资源请求,我认为他们不了解架构和规范之间的关系。但我可能错了。

标签: xslt saxon xpath-2.0


【解决方案1】:

XPath 规范定义了每个实现都必须提供的一组核心函数(一个从一个 XPath 版本发展到下一个版本的库)。它还允许由实现、用户或第三方提供附加功能(但以实现定义的方式)。

像xfi:identifier() 这样的函数在不同的规范 (XBRL) 中定义为核心 XPath 函数库的扩展。 Saxon 没有实现“开箱即用”的 XBRL 规范中定义的功能。

您需要找到一种产品,该产品提供了与 Saxon 一起使用的这些功能的实现。

当然,您可以自己实现这些功能,在这种情况下,Saxon 文档会告诉您如何实现。但这听起来需要做很多工作,而且可能有 XBRL 包可以为您做这件事。寻找XBRL软件包,例如https://www.reportingstandard.com/?lang=en

【讨论】:

  • 谢谢迈克尔。我应该意识到没有库会为 XBRL 函数提供自定义实现。看起来我必须自己实现它们,而 Saxon 确实提供了有效的方法来处理这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2018-03-31
  • 2013-07-13
  • 2022-08-24
相关资源
最近更新 更多