列的顯示數我想用的for-each循環來顯示基於的計數屬性值<TD>列。有人可以幫助我實現它嗎?我是XSLT開發新手。基於屬性值使用XSLT
XML節點:
<行計數= 「72」 >
編輯:計數 - 這裏稱爲爲列數行中
預先感謝。
列的顯示數我想用的for-each循環來顯示基於的計數屬性值<TD>列。有人可以幫助我實現它嗎?我是XSLT開發新手。基於屬性值使用XSLT
XML節點:
<行計數= 「72」 >
編輯:計數 - 這裏稱爲爲列數行中
預先感謝。
在XSLT 2.0中,您可以使用「到」運營商,並簡單地說
<xsl:template match="row">
<xsl:variable name="theRow" select="." />
<tr>
<xsl:for-each select="1 to @count">
<td><!-- insert cell contents here --></td>
</xsl:for-each>
</tr>
</xsl:template>
內for-each
,.
將是當前數,所以如果你需要訪問你需要的row
元素將其保存在一個變量中。
如果您的計數不在千位,可以通過簡單的遞歸來完成。迭代是不可能的,因爲XSLT中沒有可修改的變量。
<xsl:template match="row[@count > 0]">
<xsl:call-template name="new-td">
<xsl:with-param name="count" select="@count" />
</xsl:call-template>
</xsl:template>
<xsl:template name="new-td">
<xsl:param name="count" select="0" />
<xsl:if test="$count">
<!-- create current cell -->
<td>
<!-- contents... -->
</td>
<!-- recursive step: create next cell -->
<xsl:call-template name="new-td">
<xsl:with-param name="count" select="$count - 1" />
</xsl:call-template>
</xsl:if>
</xsl:template>
根據您的XSLT處理器是多麼的聰明是它會優化到這個幕後迭代循環,使堆棧溢出錯誤是不太可能發生,不管$count
有多高。試着用一個非常高的數字來找出你的XSLT處理器如何反應。
IBM DeveloperWorks上的推薦閱讀:Use recursion effectively in XSL,尤其是「遞歸示例2:遍歷數字」。
XSLT 1.0或2.0?在2.0中更容易。 –
它的1.0,感謝如果你可以發佈這兩個解決方案。謝謝 – user2218497
你的問題不清楚 - 至少對我來說:你想顯示72列或示例顯示一列值爲「72」顯示?爲什麼元素名爲row? – Andreas