如何从xsl-fo中for循环的xml文件中的上层元素获取值?

时间:2013-09-19 12:52:55

标签: xml xslt

想象一下,我有一个像这样的xml:

<years>
    <year yearValue="2011">
        <month monthValue="1" workTime="10">
        <month monthValue="2" workTime="90">
    </year>
    <year yearValue="2012">
        <month monthValue="2" workTime="90">
    </year>
</years>

所以当我在我的XML文件中循环时

<xsl:for-each select="activityExport/years">
    <xsl:for-each select="year">
        <xsl:for-each select="month">
            <xsl:value-of select="@workTime"/>
            <xsl:value-of select="@monthValue"/>

但是我也想在@workTime之后显示yearValue。

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:2)

您在select标记的xsl:value-of属性中指定的值是XPath表达式。基于XPath语法,此值是源文档中必须在输出上写入的某个标记或属性的地址。您可以在最内层循环的XPath表达式中使用相对路径来访问父标记的yearValue属性;比如'../@yearValue'。

所以我认为这样的事情可能就是你的答案:

<xsl:for-each select="activityExport/years">
    <xsl:for-each select="year">
        <xsl:for-each select="month">
            <xsl:value-of select="@workTime"/>
            <xsl:value-of select="../@yearValue"/>
            <xsl:value-of select="@monthValue"/>