XSLT(Umbraco CMS用)を適切にコーディングしたいと思っていますが、困惑しています。私がやろうとしていることは:
特定のノードから開始し、各子ノードをdivに配置します。3人の子供ごとに、親divでラップします。
for-each
、choose
およびwhen
ステートメントの混乱の代わりに、apply-template
構造を実装しようとしましたが、そのコツをつかむことができないようです。これが今のXSLTの混乱です(これは悪い習慣であり、パフォーマンスにとってひどいことだと確信していますが、現時点では本当に何をすべきかわかりません):
<div class="row four">
<h2>Smart Phones <a href="#" class="see-all">see all smart phones →</a></h2>
<div class="row three"> <!-- This div should be created again for every 3 divs -->
<xsl:for-each select="umbraco.library:GetXmlNodeById('1063')/descendant::*[@isDoc and string(showInMainNavigation) = '1']">
<xsl:choose>
<xsl:when test="position() < 3">
<div class="col">
<a href="{umbraco.library:NiceUrl(./@id)}">
<img class="phonePreviewImg" src="{./previewImage}" style="max-width:117px; max-height:179px;" />
<h4 class="phoneTitle"><xsl:value-of select="./@nodeName" />/h4>
<p class="phonePrice">$<xsl:value-of select="./price" /></p
</a>
</div>
</xsl:when>
<xsl:when test="position() = 3"> <!-- set this div to include class of `omega` -->
<div class="col omega">
<a href="{umbraco.library:NiceUrl(./@id)}">
<img class="phonePreviewImg" src="{./previewImage}" style="max-width:117px; max-height:179px;" />
<h4 class="phoneTitle"><xsl:value-of select="./@nodeName" />/h4>
<p class="phonePrice">$<xsl:value-of select="./price" /></p
</a>
</div>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</div> <!-- End Row Three -->
</div> <!-- End Row Four -->
明らかに、このコードは「3つごとにラップ」を生成しません。誰かがこれを達成するために私が何をする必要があるかについていくつかの光を当てることができますか?