2011-07-17 50 views
-3

包裹我有以下標記:內容查詢web部件itemstyle通過組樣式在XSLT

<ul id="slider">  
    <!-- slider item --> 
    <li> 
     ... 
    </li> 
    <!-- end of slider item --> 
</ul> 

,我已經在header.xslitemStyle.xsl定義了以下itemStyle和GroupStyle XSL用於從SharePoint 2010列表顯示數據:

<!-- in header.xsl --> 
<xsl:template name="Slider" match="*[@GroupStyle='Slider']" mode="header"> 
    <ul id="slider"> 
    </ul> 
</xsl:template> 

<!-- in itemStyle.xsl --> 
<xsl:template name="Slider" match="Row[@Style='Slider']" mode="itemstyle"> 
    <xsl:variable name="SafeImageUrl"> 
     <xsl:call-template name="OuterTemplate.GetSafeStaticUrl"> 
      <xsl:with-param name="UrlColumnName" select="@Picture"/> 
     </xsl:call-template> 
    </xsl:variable> 
    <xsl:variable name="Title"> 
     <xsl:call-template name="OuterTemplate.GetTitle"> 
      <xsl:with-param name="Title" select="@Title" /> 
     </xsl:call-template> 
    </xsl:variable> 
    <xsl:variable name="Details"> 
     <xsl:call-template name="OuterTemplate.GetTitle"> 
      <xsl:with-param name="Title" select="@Details" /> 
     </xsl:call-template> 
    </xsl:variable> 
    <li> 
     <img src="{$SafeImageUrl}" alt="{$Title}" /> 
     <section class="media-description"> 
      <h2 class="slider-headline"><xsl:value-of disable-output-escaping="yes" select="$Title" /></h2> 
      <p><xsl:value-of disable-output-escaping="yes" select="$Details" /></p> 
     </section> 
    </li> 
</xsl:template> 

但事情是,將前兩個模板時,將出現<ul id="slider"></ul>所有<li>項目如下分離:

<ul id="slider"></ul> 

<!-- a bunch of tables and td here.. --> 

<ul style="width: 100%;" class="dfwp-column dfwp-list"> 
    <li class="dfwp-item"></li> 
    <li> 
     <img alt="Must-see US exhibitions" src=""> 
     <section class="media-description"><h2 class="slider-headline">Must-see US exhibitions</h2> 
      <p>(Blank)</p> 
     </section> 
    </li> 
    ... 
</ul> 

我要的是有<ul id="slider>"元素直接包住這些li's, 所以我該怎麼辦呢?

感謝

+0

請不要問,你沒有完整的信息的問題。如果您不知道XML文檔是什麼,請應用標識轉換,並且它將生成這個XML文檔。 –

+0

這不是一個完整的信息,但它的充分,請參閱http://sharepoint.stackexchange.com/questions/16284/content-query-webpart-itemstyle-wrapped-by-group-style-in-xslt/16286 –

回答

0

問題解決了,感謝@James Love

和這裏的步驟:

  • 使ContentQueryMain.xsl的副本,如下面的article有ContentQueryMain副本後說
  • 。 xsl,編輯它並尋找OutTemplate.Body
  • 然後你可以把你的包裝放在下面的變量中(但它們必須被轉義)

    <xsl:template name="OuterTemplate.Body"> 
        <xsl:variable name="BeginColumn1" select="string('&lt;ul id=&quot;slider&quot; class=&quot;dfwp-column dfwp-list&quot; style=&quot;width:')" /> 
                     <!-- ^------------------^ --> 
        <xsl:variable name="BeginColumn2" select="string('%&quot; &gt;')" /> 
        <xsl:variable name="BeginColumn" select="concat($BeginColumn1, $cbq_columnwidth, $BeginColumn2)" /> 
        <xsl:variable name="EndColumn" select="string('&lt;/ul&gt;')" /> 
                  <!-- ^---------^ --> 
    

愚蠢的解決辦法,但它的工作:S

0

什麼是你的輸入XML?爲什麼要使用「模式」 S要麼

<xsl:template name="Slider" match="*[@GroupStyle='Slider']" mode="header"><!-- Sure you want to match *? --> 
    <ul id="slider"> 
    <!-- Match the input XML path to your rows from the context of the matched element above --> 
    <xsl:apply-templates select="Row[@Style='Slider']" mode="itemstyle" /> 
    </ul> 
</xsl:template> 


<xsl:template name="Slider" match="Row[@Style='Slider']" mode="itemstyle"> 
    <li>..</li> 
</xsl:template> 

想不通:

你會做這樣的事。

+1

我我正在使用匹配和模式屬性,因爲這是SharePoint讀取XSLT模板的方式,這是必須的! –

相關問題