【问题标题】:Get current working directory for XSLT v1.0?获取 XSLT v1.0 的当前工作目录?
【发布时间】:2013-11-27 14:18:45
【问题描述】:

如何使用 XSLT 1.0 版检索当前工作目录? 我已经在这里看过这些帖子: XSL, get current working directory How to get current document uri in XSLT?

但它需要 2.0 版本,我不确定我是否有,因为当我尝试切换到 2.0 时出现错误。 这是我尝试过的 XSL sn-ps:

<xsl:variable name="myURI" select="resolve-uri('my.xsl')"/>

<xsl:variable name="myURI" select="document-uri(document(''))" />

在这两种情况下我都会遇到错误:

Error! Error checking type of the expression 'funcall(resolve-uri, [literal-expr(junit-frames.xsl)])'.
Fatal Error! Could not compile stylesheet

Error! Error checking type of the expression 'funcall(document-uri, [funcall(document, [literal-expr()])])'.
Fatal Error! Could not compile stylesheet

然后我在这里也看到了这个帖子:xslt get the file current folder path

但由于我是 XSLT 新手,我不明白答案或如何实现它。任何人都可以提供一个示例 sn-p 吗?谢谢!

【问题讨论】:

  • 你使用的是什么 xslt 处理器?
  • 我不确定,是Ant 1.8.2自带的。
  • "我尝试切换到 2.0" - 仅仅将version="1.0" 更改为version="2.0" 是不够的,您需要支持XSLT 2.0 的处理器,例如Saxon

标签: xslt


【解决方案1】:

您在评论中说您正在使用“Ant 1.8.2 附带的”处理器。在这种情况下,最简单的答案可能是将当前目录作为参数传入

<xslt style="stylesheet.xsl" in="in.xml" out="out.xml">
  <param name="basedir" expression="${basedir}" />
</xslt>

并在您的样式表中添加一个顶级

<xsl:param name="basedir" />

现在您可以以$basedir 访问当前目录路径。

如果您需要将路径作为 URI 而不是本机文件路径,您可以使用 makeurl:

<makeurl file="${basedir}" property="basedir.url" />
<xslt style="stylesheet.xsl" in="in.xml" out="out.xml">
  <param name="basedir" expression="${basedir.url}" />
</xslt>

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2016-04-05
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多