Xslt 使用Sitecore进行XSL排序

Xslt 使用Sitecore进行XSL排序,xslt,sitecore,Xslt,Sitecore,我对xsl不是很熟悉,所以我在这方面有些磕磕绊绊 我的xsl文件正在构建一个菜单。我正在尝试按照Sitecore中“菜单标题”字段中的值对菜单项进行排序。当我运行代码时,它不会排序。它只是把每个菜单项写四次 谁能解释一下我遗漏了什么 <xsl:template name="show-title"> <xsl:param name="root" /> <xsl:for-each select="$sc_currentitem/item">

我对xsl不是很熟悉,所以我在这方面有些磕磕绊绊

我的xsl文件正在构建一个菜单。我正在尝试按照Sitecore中“菜单标题”字段中的值对菜单项进行排序。当我运行代码时,它不会排序。它只是把每个菜单项写四次

谁能解释一下我遗漏了什么

<xsl:template name="show-title">
    <xsl:param name="root" />
    <xsl:for-each select="$sc_currentitem/item">
        <xsl:sort select="sc:fld('menu title',.)" order="ascending"/>
        <xsl:choose>
            <xsl:when test="sc:fld('menu title',$root)!=''">
                <sc:text field="menu title" select="$root" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$root/@name" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:template>
编辑:下面是上面代码生成的数据 示例输出:

03/05/201203/05/201203/05/201203/05/2012 03/01/201203/01/201203/01/201203/01/2012 03/08/201203/08/201203/08/201203/08/2012 03/02/201203/02/201203/02/201203/02/2012 03/07/201203/07/201203/07/201203/07/2012 我试图让它生成以下内容:

03/01/2012 03/02/2012 03/05/2012 03/07/2012 03/08/2012
谢谢

这只是一个猜测,因为你没有提供足够的信息让任何人做更多的猜测,但是

在for each中,您指的是$root,例如


我猜$root参数包含某种列表,您应该根据当前上下文中的某个值来选择该列表的一部分。看起来您试图从错误的节点读取菜单标题字段。您应该从上下文节点->读取它。示例输入xml以及从中调用此模板的上下文将非常有用这是我的问题的一部分。我真的不确定我在处理什么。我基本上只是想弄清楚如何对日期“菜单标题”进行排序。当我尝试将sc_currentitem/item添加到for each标记时,会导致每个菜单项的数据出现多次。日期只能出现一次,不能重复。
<xsl:template name="show-title">
    <xsl:param name="root" />
    <xsl:for-each select="$sc_currentitem/item">
        <xsl:sort select="sc:fld('menu title',.)" order="ascending"/>
        <xsl:choose>
            <xsl:when test="sc:fld('menu title',$root)!=''">
                <sc:text field="menu title" select="." />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="./@name" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:template>