CMS umbraco - xsl后代

时间:2013-05-21 08:50:03

标签: xslt umbraco

我有一个包含文件夹和链接的页面

-FirstPage
  +folder
  -page
  -page
  -folder
    -link1
    -link2
    -link3
  -page

我想要到达树中的link1,link2,link3。我当前的页面是第一页。 我怎么做?? 这是我写的xsl,他给了我顶部文件夹中的第一个链接

<xsl:template match="/">
<xsl:for-each select="$currentPage/descendant-or-self::* [@isDoc][@level=2]">
<xsl:if test="count(current()/descendant::* [@isDoc]) &gt; 0">
<xsl:variable name="descendantPage" select="current()/descendant::* [@isDoc]"/>   
<xsl:value-of select="$descendantPage/text"/>
</xsl:if>
</xsl:for-each>
</xsl:template>

感谢您的帮助。

编辑:新的xsl我用...

<xsl:variable name="fId" select="number(1395)" />
<xsl:variable name="linksFolder" select="$currentPage/descendant-or-self::* [@isDoc][@level=2][@id='$fId']">
<xsl:template match="/">
  <xsl:for-each select="$linksFolder/* [@isDoc]">
    <xsl:value-of select="./text">
  </xsl:for-each>
</xsl:template>

如何避免使用输出(如文件夹的ID)来获取我想要的文件夹? 谢谢你的帮助...

1 个答案:

答案 0 :(得分:0)

有很多有用的提示&amp; Umbraco维基在线书籍(http://en.wikibooks.org/wiki/Umbraco/Various_useful_XSLT_methods_in_Umbraco)。您可以使用文件夹节点的doc类型来查找链接(而不是id)。

例如,循环某个doc类型的所有节点(linkFolderDocType):

<xsl:for-each select="$currentPage/ancestor-or-self::root//node [@nodeTypeAlias='linkFolderDocType']">
  <xsl:value-of select="./text">
</xsl:for-each>