0

我整个上午和昨天下午都在搜索,但仍然找不到解决问题的方法。如果你能帮忙就太好了。

我正在处理一个 xsl-fo 文件,该文件将使用 apache fop 转换为 PDF 格式。我正在尝试使用参数将 xpaths 修改为我的 xml 文件。这是一个比以下示例复杂得多的系统,但我已将其简化为问题的根源。

假设我的 xml 文件如下所示:

<sc931>
    <whyoming>
              <train>
                   <miles>98</miles>
                   <time>9888</time>
    </whyoming>
    <georgia>
              <train>
                   <miles>98</miles>
                   <time>9888</time>
    </georgia>
</sc931>

我想做的是使用模板参数来访问这些值,如下所示:

参数声明

<xsl:param name="state" select="whyoming"/>

称呼

<xsl:value-of select="concat(/sc931/, $state, /train/miles)"/>

但是这个调用不起作用,因为 concat 函数返回一个字符串而不是指向正确节点的指针。使用模板参数修改赋予 value-of 语句的地址的正确方法是什么?

4

1 回答 1

3

在 XSLT 3.0 之前没有动态 XPath 评估,但对于您的简单情况,使用<xsl:value-of select="/sc931/*[local-name() = $state]/train/miles"/>.

[编辑]我忽略了您的参数被定义为<xsl:param name="state" select="whyoming"/>,您需要将其更改<xsl:param name="state" select="'whyoming'"/>为我的建议才能起作用。

于 2012-06-13T16:37:25.710 回答