我正在尝试使用XSL生成PDF。但我不想要重复(它不应该背靠背显示),仅适用于value = Started。
下面是我显示查询结果的XSL片段(string_1列)。
<xsl:for-each select="root/query1/row">
<fo:table-row height="0.9cm">
<xsl:if test="event_name = 'Started'">
<fo:table-cell border-style="solid" border-width="0.5pt"
number-columns-spanned="5">
<fo:block font-family="Courier" color="Blue" font-size="10pt" font-weight="normal" text-align="center">
<xsl:value-of select="string_1"/>
</fo:block>
</fo:table-cell>
</xsl:if>
</xsl:for-each>
例如, 我的query1可能会给出如下结果:
==
开始
正在进行中
完整
开始
开始
正在进行中
正在进行中
完整
======
开始
正在进行中
完整
开始
正在进行中
正在进行中
完成
很抱歉,如果我没有提供太多信息。我是XSL的新手。
答案 0 :(得分:0)
我不知道,您的输入XML究竟是什么样子,但您应该能够适应这种XML
<root>
<query1>
<row>
<string_1>Started</string_1>
</row>
<row>
<string_1>In Progress</string_1>
</row>
<row>
<string_1>In Progress</string_1>
</row>
<row>
<string_1>In Progress</string_1>
</row>
<row>
<string_1>Complete</string_1>
</row>
</query1>
</root>
和这个XSLT:
<xsl:template match="/">
<xsl:for-each select="root/query1/row">
#> <xsl:if test="not(preceding-sibling::*[1]=string_1)">
<fo:table-row height="0.9cm">
<!-- <xsl:if test="event_name = 'Started'"> -->
<fo:table-cell border-style="solid" border-width="0.5pt" number-columns-spanned="5">
<fo:block font-family="Courier" color="Blue" font-size="10pt" font-weight="normal" text-align="center">
<xsl:value-of select="string_1" />
</fo:block>
</fo:table-cell>
<!-- </xsl:if> -->
</fo:table-row>
#> </xsl:if>
</xsl:for-each>
</xsl:template>
我通过#&gt;突出显示了重要的部分。我已经注释掉了一个if语句,它似乎用于在启动的节点上进行不同的格式化。
preceding-sibling::*[1]
为您提供最后处理的节点。它与作为当前节点的string_1
进行比较。如果它不同(not()
),它应该成为输出的一部分。