在XSL中将文件路径转换为变量

时间:2013-12-26 11:42:11

标签: variables xslt filepath

我的文件与xsl文件不在同一个位置。如何将文件路径添加到我的xsl文件中的变量中?

执行xsl文件时出现以下错误: 没有找到按样式表转换的文件

代码:

   <xsl:variable name="filename" select="'../../file.xml'" />
   <xsl:for-each select="document($filename)>
      ...
   </xsl:for-each>

感谢

1 个答案:

答案 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