如何使用 XSL 1.0 在重复上下文中显示当前日期?
How to display current date in repeating context with XSL 1.0?
我试图在重复上下文中显示当前日期,而我的元素在重复上下文之外。
样本XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<AllLines>
<Versions>
<field1>V1.0</field1>
<field2>A1.0</field2>
</Versions>
<Versions>
<field1>V2.0</field1>
<field2>A2.0</field2>
</Versions>
<Versions>
<field1>V3.0</field1>
<field2>A3.0</field2>
</Versions>
<Versions>
<field1>V4.0</field1>
<field2>A4.0</field2>
</Versions>
<Versions>
<field1>V5.0</field1>
<field2>A5.0</field2>
</Versions>
</AllLines>
<CurrentLines>
<CurrentLine date="21 Aug">
<field1>X1.0</field1>
<field2>Y1.0</field2>
<field3>Y1.0</field3>
</CurrentLine>
<CurrentLine date="30 Jan">
<field1>X2.0</field1>
<field2>Y2.0</field2>
<field3>Y2.0</field3>
</CurrentLine>
<CurrentLine date="02 Feb">
<field1>X3.0</field1>
<field2>Y3.0</field2>
<field3>Y3.0</field3>
</CurrentLine>
<CurrentLine date="21 Aug">
<field1>X4.0</field1>
<field2>Y4.0</field2>
<field3>Y4.0</field3>
</CurrentLine>
<CurrentLine date="03 Jan">
<field1>X5.0</field1>
<field2>Y5.0</field2>
<field3>Y5.0</field3>
</CurrentLine>
</CurrentLines>
</root>
我的示例模板将如下所示:
<xsl:template name="displayDate">
<fo:block>
<xsl:for-each select="/root/AllLines/Versions">
<fo:block>
<xsl:value-of select="field1" />
</fo:block>
<fo:block>
<xsl:value-of select="field2" />
</fo:block>
<fo:block border-bottom="1pt solid black" margin-bottom="4pt">
<xsl:value-of select="/root/CurrentLines/CurrentLine[current()]/@date" />
</fo:block>
</xsl:for-each>
</fo:block>
</xsl:template>
使用上述模板,我生成了以下输出:
V1.0
A1.0
21 Aug
--------
V2.0
A2.0
21 Aug
-------
V3.0
A3.0
21 Aug
------
V4.0
A4.0
21 Aug
------
V5.0
A5.0
21 Aug
每个重复组中的第三个元素始终显示第一个日期属性,来自 /root/CurrentLines/CurrentLine
。
预期结果将是:
V1.0
A1.0
21 Aug
--------
V2.0
A2.0
30 Jan
-------
V3.0
A3.0
02 Feb
------
V4.0
A4.0
21 Aug
------
V5.0
A5.0
03 Jan
有什么方法可以让我在 Versions
之后继续重复并显示当前字段,但根据相应的当前 CurrentLine
元素显示当前 @date
属性?
谢谢!
尝试:
<xsl:for-each select="/root/AllLines/Versions">
<xsl:variable name="i" select="position()" />
<fo:block>
<xsl:value-of select="field1" />
</fo:block>
<fo:block>
<xsl:value-of select="field2" />
</fo:block>
<fo:block border-bottom="1pt solid black" margin-bottom="4pt">
<xsl:value-of select="/root/CurrentLines/CurrentLine[$i]/@date" />
</fo:block>
</xsl:for-each>
我试图在重复上下文中显示当前日期,而我的元素在重复上下文之外。
样本XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<AllLines>
<Versions>
<field1>V1.0</field1>
<field2>A1.0</field2>
</Versions>
<Versions>
<field1>V2.0</field1>
<field2>A2.0</field2>
</Versions>
<Versions>
<field1>V3.0</field1>
<field2>A3.0</field2>
</Versions>
<Versions>
<field1>V4.0</field1>
<field2>A4.0</field2>
</Versions>
<Versions>
<field1>V5.0</field1>
<field2>A5.0</field2>
</Versions>
</AllLines>
<CurrentLines>
<CurrentLine date="21 Aug">
<field1>X1.0</field1>
<field2>Y1.0</field2>
<field3>Y1.0</field3>
</CurrentLine>
<CurrentLine date="30 Jan">
<field1>X2.0</field1>
<field2>Y2.0</field2>
<field3>Y2.0</field3>
</CurrentLine>
<CurrentLine date="02 Feb">
<field1>X3.0</field1>
<field2>Y3.0</field2>
<field3>Y3.0</field3>
</CurrentLine>
<CurrentLine date="21 Aug">
<field1>X4.0</field1>
<field2>Y4.0</field2>
<field3>Y4.0</field3>
</CurrentLine>
<CurrentLine date="03 Jan">
<field1>X5.0</field1>
<field2>Y5.0</field2>
<field3>Y5.0</field3>
</CurrentLine>
</CurrentLines>
</root>
我的示例模板将如下所示:
<xsl:template name="displayDate">
<fo:block>
<xsl:for-each select="/root/AllLines/Versions">
<fo:block>
<xsl:value-of select="field1" />
</fo:block>
<fo:block>
<xsl:value-of select="field2" />
</fo:block>
<fo:block border-bottom="1pt solid black" margin-bottom="4pt">
<xsl:value-of select="/root/CurrentLines/CurrentLine[current()]/@date" />
</fo:block>
</xsl:for-each>
</fo:block>
</xsl:template>
使用上述模板,我生成了以下输出:
V1.0
A1.0
21 Aug
--------
V2.0
A2.0
21 Aug
-------
V3.0
A3.0
21 Aug
------
V4.0
A4.0
21 Aug
------
V5.0
A5.0
21 Aug
每个重复组中的第三个元素始终显示第一个日期属性,来自 /root/CurrentLines/CurrentLine
。
预期结果将是:
V1.0
A1.0
21 Aug
--------
V2.0
A2.0
30 Jan
-------
V3.0
A3.0
02 Feb
------
V4.0
A4.0
21 Aug
------
V5.0
A5.0
03 Jan
有什么方法可以让我在 Versions
之后继续重复并显示当前字段,但根据相应的当前 CurrentLine
元素显示当前 @date
属性?
谢谢!
尝试:
<xsl:for-each select="/root/AllLines/Versions">
<xsl:variable name="i" select="position()" />
<fo:block>
<xsl:value-of select="field1" />
</fo:block>
<fo:block>
<xsl:value-of select="field2" />
</fo:block>
<fo:block border-bottom="1pt solid black" margin-bottom="4pt">
<xsl:value-of select="/root/CurrentLines/CurrentLine[$i]/@date" />
</fo:block>
</xsl:for-each>