我在以下XSLT代码中遇到问题。
Foreach
循环生成14条记录,其中4条由
<xsl:if test="esperto = 'F'">
子句。
<xsl:for-each select="../partite/risultatopartita">
<xsl:if test="esperto = 'F'">
<tr>
<xsl:if test="position()=1">
<td rowspan="4" class='centra'>Favorite</td>
</xsl:if>
<td class='centra'>
<xsl:value-of select="posizione"/>
</td>
<td class='centra'>
<xsl:value-of select="squadra1"/>
</td>
<td class='centra'>
<xsl:value-of select="squadra2"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
我需要首先TD
(一个rowspan="4"
)只会第一次打印,但“第一次if子句为true,而不是第一次foreach迭代” 。
事实上,<xsl:if test="position()=1">
获得了第一次foreach迭代,但显然有可能满足<xsl:if test="esperto = 'F'">
的迭代不能成为foreach的第一个迭代。
如何解决?
所需的HMTL代码是:
<table>
<tr>
<td rowspan="4" class='centra'>Favorite</td>
<td class="centra">2</td>
<td class="centra">fooText 1</td>
<td class="centra">foofooText 1</td>
</tr>
<tr>
<td class="centra">6</td>
<td class="centra">fooText 2</td>
<td class="centra">foofooText 2</td>
</tr>
<tr>
<td class="centra">10</td>
<td class="centra">fooText 3</td>
<td class="centra">foofooText 3</td>
</tr>
<tr>
<td class="centra">14</td>
<td class="centra">fooText 4</td>
<td class="centra">foofooText 4</td>
</tr>
</table>
答案 0 :(得分:1)
如果没有输入XML,很难找到答案。 您可以使用以下代码代替for-each块:
<xsl:for-each select="../partite/risultatopartita">
<xsl:if test="esperto = 'F'">
<tr>
<xsl:if test="not(preceding-sibling::risultatopartita/esperto='F')">
<td rowspan="4" class='centra'>Favorite</td>
</xsl:if>
<td class='centra'>
<xsl:value-of select="posizione"/>
</td>
<td class='centra'>
<xsl:value-of select="squadra1"/>
</td>
<td class='centra'>
<xsl:value-of select="squadra2"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
答案 1 :(得分:1)
而不是
<xsl:for-each select="../partite/risultatopartita">
<xsl:if test="esperto = 'F'">
你应该在select表达式中添加一个谓词,即使用
<xsl:for-each select="../partite/risultatopartita[esperto = 'F']">
应该这样做,至少只要你的真实代码除了xsl:if
内的xsl:for-each
之外什么都没有。