2013-11-25 66 views
-1

我一直在編寫一些XSL以與SharePoint列表一起使用,以瞭解SharePoint 2010將僅使用XSLT 1.0。有人可以幫我把這個翻譯成XSL 1嗎?將xslt 2轉換爲xslt 1用於SharePoint XSL轉換

<xsl:stylesheet version="2.0" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl"> 
    <xsl:output method="html" indent="yes"/> 
    <xsl:template match="/"> 
    <ul id="acc1" class="accordion"> 
     <xsl:for-each-group select="Row" group-by="@Category"> 
     <li> 
      <h4> 
      <xsl:value-of select="current-grouping-key()"/> 
      </h4> 
      <div class="inner"> 
      <ul> 
       <xsl:for-each-group select="current-group()" group-by="@SubCategory "> 
       <li> 
        <h5> 
        <xsl:value-of select="current-grouping-key()"/> 
        </h5> 
        <div class="inner"> 
        <xsl:for-each select="current-group()"> 
         <xsl:sort select="substring-after(@URL,', ')"/> 
         <p> 
         <a href="{substring-before(@URL,', ')}"> 
          <xsl:value-of select="substring-after(@URL,', ')"/> 
         </a> 
         </p> 
        </xsl:for-each> 
        </div> 
       </li> 
       </xsl:for-each-group> 
      </ul> 
      </div> 
     </li> 
     </xsl:for-each-group> 
    </ul> 
    </xsl:template> 
</xsl:stylesheet> 

回答

1

閱讀http://www.biglist.com/lists/xsl-list/archives/200101/msg00070.html並嘗試大意如下:

<xsl:key name="k1" match="Row" use="@Category"/> 

    <xsl:key name="k2" match="Row" use="concat(@Category, '|', @SubCategory)"/> 

    <xsl:template match="/"> 
    <ul id="acc1" class="accordion"> 
     <xsl:for-each select="Row[generate-id() = generate-id(key('k1', @Category)[1])]"> 
     <li> 
      <h4> 
      <xsl:value-of select="@Category"/> 
      </h4> 
      <div class="inner"> 
      <ul> 
       <xsl:for-each select="key('k1', @Category)[generate-id() = generate-id(key('k2', concat(@Category, '|', @SubCategory))[1])] "> 
       <li> 
        <h5> 
        <xsl:value-of select="@SubCategory"/> 
        </h5> 
        <div class="inner"> 
        <xsl:for-each select="key('k2', concat(@Category, '|', @SubCategory))"> 
         <xsl:sort select="substring-after(@URL,', ')"/> 
         <p> 
         <a href="{substring-before(@URL,', ')}"> 
          <xsl:value-of select="substring-after(@URL,', ')"/> 
         </a> 
         </p> 
        </xsl:for-each> 
        </div> 
       </li> 
       </xsl:for-each> 
      </ul> 
      </div> 
     </li> 
     </xsl:for-each> 
    </ul> 
    </xsl:template> 
+0

THANK YOU MARTIN !!!!對代碼進行了一些修改以添加選擇 - 它像魅力一樣工作......如果有人需要複製該過程,我將發佈更新後的代碼。 – JohnAlden

0

此代碼是馬丁的修改,以完成功能出色答卷。

<xsl:stylesheet version="1.0" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl"> 
    <xsl:output method="html" indent="yes" version="4.0"/> 
    <xsl:key name="k1" match="Row" use="@Category"/> 
    <xsl:key name="k2" match="Row" use="concat(@Category, '|', @SubCategory)"/> 
    <xsl:template match="/"> 
    <ul id="acc1" class="accordion"> 
     <xsl:for-each select="/dsQueryResponse/Rows/Row[generate-id() = generate-id(key('k1', @Category)[1])]"> 
     <li> 
      <h4> 
      <xsl:value-of select="@Category"/> 
      </h4> 
      <div class="inner"> 
      <ul> 
       <xsl:for-each select="key('k1', @Category)[generate-id() = generate-id(key('k2', concat(@Category, '|', @SubCategory))[1])] "> 
       <li> 
        <xsl:choose> 
        <xsl:when test="@SubCategory!=''"> 
         <h5> 
         <xsl:value-of select="@SubCategory"/> 
         </h5> 
         <div class="inner"> 
         <xsl:for-each select="key('k2', concat(@Category, '|', @SubCategory))"> 
          <xsl:sort select="@URL.desc"/> 
          <p> 
          <a target="_FileNet" href="{@URL}"> 
           <xsl:value-of select="@URL.desc"/> 
          </a> 
          </p> 
         </xsl:for-each> 
         </div> 
        </xsl:when> 
        <xsl:otherwise> 
         <xsl:for-each select="key('k2', concat(@Category, '|', @SubCategory))"> 
         <xsl:sort select="@URL.desc"/> 
         <p> 
          <a target="_FileNet" href="{@URL}"> 
          <xsl:value-of select="@URL.desc"/> 
          </a> 
         </p> 
         </xsl:for-each> 
        </xsl:otherwise> 
        </xsl:choose> 
       </li> 
       </xsl:for-each> 
      </ul> 
      </div> 
     </li> 
     </xsl:for-each> 
    </ul> 
    </xsl:template> 
</xsl:stylesheet>