以下是您詢問的完整代碼。我碰巧是作者,所以讓我解釋一下:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
以下模板將覆蓋元素節點的XSLT內置模板。 它匹配每6k + 1個gallery
元素。它會創建一個tr
元素,並在其內部將其處理此元素的結果放置到下一個5。處理以特殊模式(「proc」)完成,以區別於默認的匿名模式,在模板中啓動並繼續運行。
<xsl:template match="gallery[position() mod 6 = 1]">
<tr>
<xsl:apply-templates mode="proc"
select=".|following-sibling::gallery[not(position() > 5)]"
/>
</tr>
</xsl:template>
下面的模板被調用在模式「PROC」到一組6個在每gallery
元素應該是相同的行中的處理。
<xsl:template match="gallery" mode="proc">
<td>
<img src="{gallery-image-location}" alt="{gallery-image-alt}"/>
</td>
</xsl:template>
下面的模板覆蓋XSLT的默認處理內置模板所有gallery
元件,其位置是不是類型6K + 1(它們不開始一個新的6元組)的。它只是說不對任何這樣的元素做任何事情,因爲這些元素已經在「proc」模式下處理了。
<xsl:template match="gallery[not(position() mod 6 = 1)]"/>
</xsl:stylesheet>
您需要熟悉XSLT的處理模型,默認處理和內置模板。
不要鏈接鏡像;) – 2010-10-24 21:14:39
爲什麼你不要問Dimitre Novatchev在回答評論? – 2010-10-24 21:21:26
好問題,+1。看到我的代碼的詳細解釋。 – 2010-10-24 21:33:53