我正在尝试使用XSL生成PDF。但是我不想要重复(不应背对背显示它),而只是为了值=启动。
下面是我显示查询结果(String_1列)的XSL片段。
<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>
eg,我的查询1可能会给出:
String_1
=======
开始
进行
完成
开始
开始
进行
进行
完成
我的pdf应该是
==========
开始
进行
完成
开始
进行
进行
完成
对不起,如果我没有提供太多信息。我是XSL的新手。
我不知道,您的输入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>
我通过#>突出显示了重要的行。我已经评论了似乎在启动 nodes上进行不同格式的if statement。
preceding-sibling::*[1]
为您提供了最后一个处理的节点。它与当前节点的string_1
进行了比较。如果它不同(not()
),则应成为输出的一部分。