我的文件与xsl文件不在同一个位置。如何将文件路径添加到我的xsl文件中的变量中?
执行xsl文件时出现以下错误: 没有找到按样式表转换的文件
代码:
<xsl:variable name="filename" select="'../../file.xml'" />
<xsl:for-each select="document($filename)>
...
</xsl:for-each>
感谢
答案 0 :(得分:4)
如果你使用的是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