以下是您询问的完整代码。我碰巧是作者,所以让我解释一下:
<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