有没有办法从xslt文件中获取当前文件夹路径?
需要它找到其他xml和xslt文件。我们有不同的客户文件夹,需要成功找到正确的文件。
干杯
答案 0 :(得分:6)
您可以使用xsl:param从外部将其发送到样式表。然后,您需要确定从外部调用时当前路径是什么;)
答案 1 :(得分:5)
在Windows上的MSXSL中,您可以使用如下脚本扩展名:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://tempuri.org/msxsl"
>
<msxsl:script language="JScript" implements-prefix="user">
<![CDATA[
var fso = new ActiveXObject("Scripting.FileSystemObject");
function getCurrentPath(){
return fso.GetFolder(".").Path
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:getCurrentPath()"/>
</xsl:template>
</xsl:stylesheet>
其他XSL处理器支持类似的方法来使用外部资源(脚本语言,函数库等),所以这只是一个例子。
答案 2 :(得分:5)
有没有办法获得最新信息 xslt文件中的文件夹路径?
需要它找到其他xml和xslt 文件
无需任何扩展功能甚至参数!
<xsl:import>
或<xsl:include>
的href
属性中使用的任何 相对 网址
基于当前XSLT样式表的URL解析指令 - 它只需要一个URL,在上面的问题中这个URL被清楚地说明为true。这在导入/包含XSLT样式表时非常方便。
document()
函数也会以类似的方式解析相对网址,从而可以使用相关网址访问任何其他XML文档。
最后, an example 如何在大型库的XSLT函数和模板(FXSL 2.x)中大量使用这些工具:< / p>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="xs xdt f"
>
<!--
This module contains the FXSL versions of the "standard" XPath functions
These are intended as convenience functions, so that they can be passed
as parameters to other functions (e.g. to f:zipWith())
or curried and passed as parameters (e.g. to f:map())
-->
<xsl:import href="func-curry.xsl"/>
<xsl:import href="func-compose-flist.xsl"/>
<xsl:import href="func-standardArithmeticXpathFunctions.xsl"/>
<xsl:import href="func-standardBooleanXpathFunctions.xsl"/>
<xsl:import href="func-standardStringXpathFunctions.xsl"/>
<xsl:import href="func-standardNodesXpathFunctions.xsl"/>
<xsl:import href="func-standardSequencesXpathFunctions.xsl"/>
<xsl:import href="func-standardAggregateXpathFunctions.xsl"/>
<xsl:import href="func-standardDateTimeXpathFunctions.xsl"/>
<xsl:import href="func-standardXSLTXpathFunctions.xsl"/>
<xsl:import href="func-standardAxisXpathFunctions.xsl"/>
</xsl:stylesheet>
答案 3 :(得分:4)
这可能适用于您的设置:
<xsl:value-of select="system-property('user.dir')"/>
例如,
<xsl:value-of select="document(concat(system-property('user.dir'),'/',filename,'.xml'))//title[1]"/>
答案 4 :(得分:3)
...没有
但您可以通过使用相对URL和/或将参数传递到样式表来解决问题。
答案 5 :(得分:2)
在大多数XSLT处理器中,您可以添加自定义函数作为扩展。例如,Saxon's documentation如何做到这一点。
答案 6 :(得分:1)
不是AFAIK(虽然你总是可以把它作为变换的参数传递),但是我不清楚为什么相对路径在这里不适合你。