我想检索我正在处理的XML文档的名称,我正在使用下面的Xpath.
<xsl:value-of select="fn:base-uri()"/>
Run Code Online (Sandbox Code Playgroud)
我得到的resule有文档的整个路径,如下所示
file:///C:/Users/home/Desktop/files/document/08192014/Raw.xml
Run Code Online (Sandbox Code Playgroud)
因此,为了获得XML文档的唯一名称,在Altova中,智能显示了一些功能substring-after-last(),我在下面使用它.
<xsl:value-of select="substring-after-last(fn:base-uri(),'/')"/>
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了一些错误
Unknown function 'substring-after-last'
Warning location: xsl:stylesheet / xsl:template / html / body / section / div
/ xsl:value-of / @select
Details
XPST0017: The function call 'substring-after-last' does not match the
name of a function in the static context
Run Code Online (Sandbox Code Playgroud)
请让我知道如何解决这个问题并获取文件名,同样的错误也被抛出,substring-before-last()以及Altova中给出的一些其他功能.
我使用XSLT 2.0
在线搜索我发现有一个模板创建并调用该模板,我想知道为什么我直接无法使用给定的功能谢谢
该substring-after-last函数不是XPath标准的一部分,它是Altova特定的扩展函数.要使用它,您需要声明Altova扩展名称空间,xmlns:altova="http://www.altova.com/xslt-extensions"然后将该函数称为altova:substring-after-last.
如果您希望坚持使用标准XPath函数以实现可移植性,那么您可以根据正则表达式重写它并使用该replace函数
replace(base-uri(), '^.*/', '')
Run Code Online (Sandbox Code Playgroud)
的*量词是贪心,所以这将从开始相匹配的最长可能字串的base-uri()以斜线结束,并且用一个空字符串替换它(即完全删除).
| 归档时间: |
|
| 查看次数: |
3012 次 |
| 最近记录: |