我正在转换以下XML以生成HTML。XSLT for each each complex condition
XML
<clause code="section6">
<variable col="1" name="R1C1" row="1">Water</variable>
<variable col="2" name="R1C2" row="1">true</variable>
<variable col="1" name="R2C1" row="2">Gas</variable>
<variable col="2" name="R2C2" row="2"></variable>
<variable col="1" name="R3C1" row="3">Petrol</variable>
<variable col="2" name="R3C2" row="3">true</variable>
<clause>
XSLT
1: <xsl:for-each select="$clause/variable[@col='1']">
2: <xsl:sort select="@row" data-type="number"/>
3: <xsl:variable name="row-id" select="@row"/>
4: <xsl:variable name="row" select="$clause/variable[@row=$row-id]"/>
5: <xsl:if test="$clause/variable[@col='2' and @row=$row-id]='true'">
6: <xsl:value-of name="row-no" select="concat(position(), ') ')"/>
7: <xsl:value-of select="$clause/variable[@col='1' and @row=$row-id]"/>
8: </xsl:if>
9: </xsl:for-each>
改造工作正常,结果显示的1)水3)汽油
的问题是序列号。您可以在第5行筛选行上看到条件,该行只有'true'值col 2和position()用于显示序号。我不能在XLST运行计数器。
我想知道是否可以在行1中添加第5行的条件。以上例子的结果应该是1)水2)巡逻有什么建议吗?
这是一个很好的问题和令人惊讶的事实是它有一个解决方案,它是一个XPath 2.0表达式。在XSLT 1.0中,使用密钥可以实现简短,优雅且*高效*的解决方案。 +1。 – 2012-03-29 04:28:08