Xslt 为每个第n个元素在div中为每个元素包装一个
我很难弄清楚如何将for each的内容包装到div中,其中每个div包含4个元素 下面是我的XSLT的简化版本:Xslt 为每个第n个元素在div中为每个元素包装一个,xslt,Xslt,我很难弄清楚如何将for each的内容包装到div中,其中每个div包含4个元素 下面是我的XSLT的简化版本: <xsl:template match="/"> <div class="container"><!-- have to be repeated for every 4 elements from the for-each --> <xsl:for-each select="$currentPage/
<xsl:template match="/">
<div class="container"><!-- have to be repeated for every 4 elements from the for-each -->
<xsl:for-each select="$currentPage/GalleriListe/descendant::* [@isDoc] [not(self::GalleriListe)]">
<div>...</div>
</xsl:for-each>
</div>
</xsl:template>
...
有什么想法吗?
谢谢 您没有发布您的XML,所以我使用了一个简化的XML来回答这个问题。这有点老套,也许还有更优雅的方式。你可以在
如果没有完整(但尽可能小)的源XML文档示例和确切的所需结果,这个问题就没有太大意义。请编辑问题并添加必要的信息——不要强迫有良好意愿的人猜测实际给予的和实际需要的。非常感谢您的回答。它帮我找到了正确的方向:)
<!-- declare how many items per container -->
<xsl:variable name='num_per_div' select='4' />
<!-- root - kick things off -->
<xsl:template match="/">
<xsl:apply-templates select='root/node' mode='container' />
</xsl:template>
<!-- iteration content - containers -->
<xsl:template match='node' mode='container'>
<xsl:if test='position() = 1 or not((position()-1) mod $num_per_div)'>
<div>
<xsl:variable name='pos' select='position()' />
<xsl:apply-templates select='. | following-sibling::*[count(preceding-sibling::node) < $pos+(number($num_per_div)-1)]' />
</div>
</xsl:if>
</xsl:template>
<!-- iteration content - individual items -->
<xsl:template match='node'>
<p><xsl:value-of select='.' /></p>
</xsl:template>