好的,这是我的xslt,用于遍历主项的项,但是我希望能够循环遍历模板.这样做的原因是为了使我的xslt更具体,而不是显示主项下的所有内容。
<xsl:template match="*" mode="main">
<div id="aside">
<ul id="nav">
<xsl:for-each select="$home/descendant-or-self::item[position() <= 6]">
<li>
<sc:link>
<sc:text field="Title"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class="advertisement">
<sc:image field="Image"></sc:image>
</div>
</div>
</xsl:template>
发布于 2011-05-24 19:52:35
从xslt的角度来看,您似乎在谈论导航。我将创建一个只有一个名为ShowInNavigation的字段的特定导航模板,而不是循环遍历不同的模板。然后,所有其他模板都将继承此模板,导航xslt将变得更简单。
<xsl:template match="*" mode="main">
<div id="aside">
<ul id="nav">
<xsl:for-each select="$home/descendant-or-self::item[sc:fld('ShowInNavigation') = '1']">
<li>
<sc:link>
<sc:text field="Title"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class="advertisement">
<sc:image field="Image"></sc:image>
</div>
</div>
</xsl:template>
也不要在导航中使用子代或自我::项,因为随着站点的增长,导航将成为您的瓶颈。最好使用$ home /itemsc:fld('ShowInNavigation') = '1‘,然后硬编码上面的home节点。因此xslt将变成:
<xsl:template match="*" mode="main">
<div id="aside">
<ul id="nav">
<li>
<sc:link select="$home">
<sc:text field="Title"></sc:text>
</sc:link>
</li>
<xsl:for-each select="$home/item[sc:fld('ShowInNavigation') = '1']">
<li>
<sc:link>
<sc:text field="Title"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class="advertisement">
<sc:image field="Image"></sc:image>
</div>
</div>
</xsl:template>
https://stackoverflow.com/questions/6113378
复制相似问题