Вы можете получить его, если вы используя XSLT 2.0:
Предположим, у меня есть любой каталог '/ C:/Users/vgv/Desktop/Testing', который имеет подкаталоги, кратные файлы и мой XSLT 'WBC.xsl', и я хочу искать только файл catalog.xml. Можно использовать:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:param name="XSLPath" select="base-uri(doc(.))"/>
<xsl:param name="Files" select="collection(concat(substring-before($XSLPath,concat('/',tokenize($XSLPath,'/')[last()])),'?select=catalog.xml;recurse=yes'))"/>
<xsl:template match="/">
<xsl:message><xsl:value-of select="$XSLPath"/></xsl:message>
<xsl:message><xsl:value-of select="base-uri($Files)"/></xsl:message>
</xsl:template>
</xsl:stylesheet>
который производит сообщение:
file:/C:/Users/vgv/Desktop/Testing/WBC.xsl
file:/C:/Users/vgv/Desktop/Testing/fxsl-xslt2/catalog.xml
попробовать ../../file.xml XSL: переменная> –
nrathaus
Что значит «не работает»? Вы только что объявили переменную и присвоили ей значение строки. Чего ты ожидал? –
Как вы используете переменную имени файла позже - можете ли вы предоставить нам пример или короткий фрагмент? – mockinterface