Xslt 使用Sitecore进行XSL排序
我对xsl不是很熟悉,所以我在这方面有些磕磕绊绊 我的xsl文件正在构建一个菜单。我正在尝试按照Sitecore中“菜单标题”字段中的值对菜单项进行排序。当我运行代码时,它不会排序。它只是把每个菜单项写四次 谁能解释一下我遗漏了什么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: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>