стиль элемента веб-части запроса контента, обернутый групповым стилем в XSLT - PullRequest
0 голосов
/ 17 июля 2011

У меня есть следующая разметка:

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

, и я определил следующие itemStyle и GroupStyle xsl в header.xsl и itemStyle.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 напрямую, так как я могу это сделать?

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

проблема решена, благодаря @ James Love ,

и вот шаги:

  • сделайте копию ContentQueryMain.xsl, как в следующей статье говорится
  • после получения копии 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 голосов
/ 17 июля 2011

Какой у вас ввод XML?

Вы бы сделали что-то вроде этого:

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

Не можете понять, почему вы используете "mode".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...