【发布时间】:2013-09-09 10:57:42
【问题描述】:
我正在将一个 xml 文件传递给我的 fo 文件,如下所示:
<?xml version="1.0"?>
<activityExport>
<resourceKey>
<key>monthName</key>
<value>January</value>
</resourceKey>
所以如果我直接使用:
<xsl:value-of select="activityExport/resourceKey[key='monthName']/value"/>
我可以在我的 PDF 文件中看到“一月”。
但是,如果我在模板中这样使用它,我有:
<xsl:template name="format-month">
<xsl:param name="date"/>
<xsl:param name="month" select="format-number(substring($date,6,2), '##')"/>
<xsl:param name="format" select="'m'"/>
<xsl:param name="month-word">
<xsl:choose>
<xsl:when test="$month = 1"><xsl:value-of select="activityExport/resourceKey[key='monthName']/value"/>
</xsl:when>
然后我打电话时看不到“一月”:
<xsl:variable name="monthName">
<xsl:call-template name="format-month">
<xsl:with-param name="format" select="'M'"/>
<xsl:with-param name="month" select="@monthValue"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="concat($monthName,' ',@yearValue)"/>
我知道我的模板有效,因为如果我有一个静态字符串:
<xsl:choose>
<xsl:when test="$month = 1">Januaryyy</xsl:when>
然后我可以看到Januaryyy很好。
所以模板有效,资源存在,但选择值在 call-template 或 xsl:choose 或 xsl:when test 内不起作用
有什么帮助吗? 问候!
【问题讨论】:
-
是否可以发布您尝试转换的整个 XML?没有它,就很难知道为什么 XPath 找不到您想要的。
-
另外,
xsl:value-of的参数在您的模板中无效。它应该是<xsl:value-of select="activityExport/resourceKey[key='monthName']/value"/> -
@BenL 关于您的第一条评论,我会尽快回复。但是,当我尝试
时,我可以看到该值很好,因此该值定义在 XML 中。关于您的第二条评论,这是我只问问题时犯的错误。我已经编辑过了。 -
@BenL 我稍后会尝试用一个简单的例子来创建一个更好的问题。我正在使用的文件很大。