我想检索我正在处理的XML文档的名称,我正在使用下面的Xpath。
<xsl:value-of select="fn:base-uri()"/>
我得到的resule是文件的整个路径,如下面的
file:///C:/Users/home/Desktop/files/document/08192014/Raw.xml
所以为了获得XML文档的唯一名称,在Altova中,智能显示了一些函数substring-after-last()
,我在下面使用它。
<xsl:value-of select="substring-after-last(fn:base-uri(),'/')"/>
当我运行时,我收到了一些错误
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
请让我知道如何解决此问题并获取文件名,同样的错误也会引发substring-before-last()
以及Altova中提供的其他一些功能。
我使用XSLT 2.0
在线搜索时我发现创建了一个模板,并且对该模板进行了调用,我想知道为什么我直接无法使用给定的函数 感谢
答案 0 :(得分:5)
substring-after-last
函数不是XPath标准的一部分,它是Altova特有的扩展函数。要使用它,您需要使用xmlns:altova="http://www.altova.com/xslt-extensions"
声明Altova扩展名称空间,然后将该函数称为altova:substring-after-last
。
如果您希望坚持使用标准XPath函数以实现可移植性,那么您可以使用正则表达式重写它并使用replace
函数代替
replace(base-uri(), '^.*/', '')
*
量词是贪婪的,所以这将匹配从base-uri()
开始以斜杠结尾的最长子串,并用空字符串替换它(即完全删除它)。