2012-03-01 42 views
0

我對xsl並不是很熟悉,所以儘管如此,我還是有點磕磕絆絆。XSL使用Sitecore排序

我的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/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

謝謝!

+0

樣品輸入XML,也作爲此模板被調用將真正幫助 – Kevan 2012-03-01 20:21:46

+0

這是我的問題的一部分內容。我不確定我在處理什麼。我基本上只是想弄清楚如何排序日期('菜單標題')。當我嘗試將sc_currentitem/item添加到for-each標籤時,它會導致數據出現多次,每個菜單項。日期應該只出現一次而不是重複。 – crjunk 2012-03-01 20:45:23

回答

0

一定的價值這個名單只是一部分它看起來像你試圖從錯誤的節點讀取菜單標題字段。您應該從上下文節點讀取它 - > < -

試試這個

<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> 
0

這只是一個猜測,你真的不爲任何人做更多的猜測,但提供足夠的信息....

在您的for-each你指的是$根如<xsl:value-of select="$root/@name" />

我猜測,在$根參數包含某種形式的列表,你應該選擇基於來自電流,每個上下文