Практическое руководство. Настройка XSL для веб-части контента по запросу

Дата последнего изменения: 27 сентября 2010 г.

Применимо к: SharePoint Server 2010

Веб-часть контента по запросу можно использовать для объединения контента из нескольких источников данных на веб-сайте и дальнейшего его представления в одном месте. Перед настройкой и изменением веб-части контента по запросу следует проанализировать фирменный стиль и дизайн сайта, которые необходимо получить. В Microsoft SharePoint Server 2010 включено три XSL-файла, которые можно изменить для отображения полей в стилях, которые используются веб-частью контента по запроса для отображения объединяемого контента.

В этом разделе описываются эти три XSL-файла, используемые веб-часть контента по запросу, а также принципы их работы; описываются шаблоны и переменные, которые можно изменить, а также то, как изменить эти файлы, чтобы веб-часть контента по запросу отображала данные с заданным внешним видом.

В следующей таблице указываются и описываются три XSL-файла, описывающие веб-часть контента по запросу.

File

Расположение

Описание

ContentQueryMain.xsl

\Style Library\XSL Style Sheets\ContentQueryMain.xsl

  • Содержит логику, которая формирует соответствующие вызовы шаблонов Header и Item для каждого элемента.

  • Содержит функции, которые помогают разработчикам изменять XSLT-преобразования Header и Item.

  • Извлекает весь контент, анализирует его и передает соответствующие части в шаблоны ItemStyle и Header.

  • Поддерживает структуру веб-части контента по запросу.

  • Хранит данные, извлеченные при запросе контента из пути /dsQueryResponse/Rows/Row.

ItemStyle.xsl

\Style Library\XSL Style Sheets\ItemStyle.xsl

Содержит шаблоны, которые определяют, как отображается элемент. Эти шаблоны получают и обрабатывают одну строку данных одновременно, что позволяет обеспечить согласованность стиля и данных в строках элемента.

Данные о строке можно извлечь с помощью директивы @Property.

Header.xsl

\Style Library\XSL Style Sheets\Header.xsl

Содержит шаблоны, которые определяют, как отображать заголовок, и обеспечивают согласованность групповых заголовков.

Шаблоны, заданные в файле Header.xsl, извлекают строку следующего элемента для обработки, обычно это первая строка в группе, если не используется несколько столбцов. Если столбцов много, шаблон получает первую строку столбца.

Данные о строке следующего элемента можно извлечь с помощью директивы @Property. Также можно использовать параметр $Group, которые содержит имя столбца groupby и $GroupType, представляющий тип столбца groupby.

По умолчанию следующие шаблоны включены в файлы ItemStyle.xsl и Header.xsl. Файл Header.xsl содержит определения стиля группы, а файл ItemStyle.xsl содержит определения, которые применяются к элементам строки в веб-части контента по запросу. Эти стили соответствуют параметрам, доступным в раскрывающихся списках стиля группы и элемента, которые отображаются при выборе стилей в библиотеке стилей.

ПримечаниеПримечание

В следующих таблицах стили перечислены в том порядке, в котором они представлены в файлах.

Имя файла

Шаблоны

Действие веб-части контента по запросу

ItemStyle.xsl

Default

LinkImage находится слева.

LinkTitle находится вверху.

Описание размещено ниже.

ItemStyle.xsl

NoImage

LinkTitle находится вверху.

Описание размещено ниже.

ItemStyle.xsl

TitleOnly

Элемент содержит только LinkTitle.

ItemStyle.xsl

Bullets

Элемент содержит LinkTitle, перед которым размещен маркер.

ItemStyle.xsl

ImageRight

LinkImage находится справа.

LinkTitle находится вверху.

Описание размещено ниже.

ItemStyle.xsl

ImageTop

LinkImage находится сверху.

LinkTitle находится в центре.

Описание размещено ниже.

ItemStyle.xsl

ImageTopCentered

LinkImage находится сверху и по центру.

LinkTitle находится в центре.

Описание размещено ниже.

ItemStyle.xsl

LargeTitle

LinkImage находится слева.

LargeLinkTitle находится вверху.

Описание размещено ниже.

ItemStyle.xsl

ClickableImage

Содержит только LinkImage.

ItemStyle.xsl

NotClickableImage

Содержит только Image без ссылки.

ItemStyle.xsl

FixedImageSize

LinkImage с ограничением размера слева.

LinkTitle находится вверху.

Описание размещено ниже.

ItemStyle.xsl

TitleWithBackground

Содержит LinkTitle с фоновым цветом.

Имя файла

Шаблоны

Действие веб-части контента по запросу

Header.xsl

DefaultHeader

Отображает заголовок группы со средним размером шрифта.

Header.xsl

LargeText

Отображает заголовок группы с крупным размером шрифта.

Header.xsl

SmallText

Отображает заголовок группы с мелким размером шрифта.

Header.xsl

Band

Отображает заголовок группы с фоновым фоном.

Header.xsl

Centered

Размещает заголовок группы по центру.

Header.xsl

Separator

Вставляет линию между заголовком группы и контентом под ним.

Header.xsl

Whitespace

Вставляет пробел между заголовком группы и контентом под ним.

В каждый шаблон включены два разделы инструкций обработки.

  • Разделы <xsl:variable>, которые обрабатывают данные и обеспечивают правильное форматирование.

  • Разделы <div>, которые отображают HTML и содержат данные.

Далее представлен код шаблона ImageRight с комментариями:

///Declares an XSL template named ImageRight that

///processes row style elements defined as ImageRight.

- <xsl:template name="ImageRight" match="Row[@Style='ImageRight']"
mode="itemstyle">

///The <xsl:variable> sections process and ensure correct formatting of the data.

///This section declares the variable named SafeLinkUrl, includes instructions to call the OuterTemplate.GetSafeLink function, and includes the LinkUrl expression to scope the call to the UrlColumnName parameter.
  - <xsl:variable name="SafeLinkUrl">
       /// The OuterTemplate.GetSafeLink variable passes in the UrlColumnName that represents the column name containing the ItemUrl.
    - <xsl:call-template name="OuterTemplate.GetSafeLink">
        <xsl:with-param name="UrlColumnName" select="'LinkUrl'" />
      </xsl:call-template>
    </xsl:variable>

///This section declares the variable named SafeImageUrl and calls the OuterTemplate.GetSafeStaticUrl function.
  - <xsl:variable name="SafeImageUrl">
    - <xsl:call-template name="OuterTemplate.GetSafeStaticUrl">
        <xsl:with-param name="UrlColumnName" select="'ImageUrl'" /> 
      </xsl:call-template>
    </xsl:variable>

///This section declares the variable named SafeImageHtml and calls the OuterTemplate.GetColumnDataForUnescapedOutput function, and passes the 'PublishingRollupImage' and 'Image' parameter values to the template rule.
  - <xsl:variable name="SafeImageHtml">
    - <xsl:call-template name="OuterTemplate.GetColumnDataForUnescapedOutput">
        <xsl:with-param name="Name" select="'PublishingRollupImage'" /> 
        <xsl:with-param name="MustBeOfType" select="'Image'" /> 
      </xsl:call-template>
    </xsl:variable>

///This section declares the variable named DisplayTitle, includes calls to the OuterTemplate.GetTitle function, and passes the @Title and 'LinkUrl' parameter values to the template rule.
  - <xsl:variable name="DisplayTitle">
    - <xsl:call-template name="OuterTemplate.GetTitle">
        <xsl:with-param name="Title" select="@Title" /> 
        <xsl:with-param name="UrlColumnName" select="'LinkUrl'" /> 
      </xsl:call-template>
   </xsl:variable>

///This section declares the variable named LinkTarget and tests whether it should open the target URL in a new window. If the test returns True, then the template rule processes the instruction to open the target URL in a new window.
  - <xsl:variable name="LinkTarget">
      <xsl:if test="@OpenInNewWindow = 'True'">_blank</xsl:if> 
    </xsl:variable>

///The <div> sections define the data to render and provide instructions on how to render it. This code block defines item data, and uses the OuterTemplate.CallPresenceStatusIconTemplate function to verify whether it should create an icon.
- <div class="item">
    <xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate" />
///The <xsl:if test> instruction supplies a condition for the XSLT engine to evaluate. If the test evaluates to True after converting it to a Boolean value, the ItemStyle renders the content.
    - <xsl:if test="string-length($SafeImageUrl) = 0 and string-length($SafeImageHtml) != 0">
      - <div class="image-area-right">
          <xsl:value-of disable-output-escaping="yes" select="$SafeImageHtml" /> 
        </div>
      </xsl:if>
    - <xsl:if test="string-length($SafeImageUrl) != 0">
      - <div class="image-area-right">
        - <a href="{$SafeLinkUrl}" target="{$LinkTarget}">
            <img class="image" align="left" border="0"   src="{$SafeImageUrl}" alt="{@ImageUrlAltText}" /> 
          </a>
        </div>
      </xsl:if>
  - <div class="link-item">
    - <a href="{$SafeLinkUrl}" target="{$LinkTarget}" title="{@LinkToolTip}">
       <xsl:value-of select="$DisplayTitle" /> 
      </a>
      - <div class="description">
          <xsl:value-of select="@Description" /> 
        </div>
     </div>
  </div>
  </xsl:template>

В разделе <xsl:variables> XSL-файлов SharePoint Server 2010 доступно несколько функций, как описано в следующей таблице.

Функция

Описание

OuterTemplate.GetSafeLink

Если пользователь передает UrlColumnName (имя столбца, содержащее значение ItemUrl), эта функция возвращает URL-адрес, по которому можно отображать элемент.

Если URL-адрес небезопасен, функция возвращает пустой URL-адрес.

Если элемент не передается в потоке, функция возвращает URL-адрес CopyUtil.

OuterTemplate.GetSafeStaticUrl

Если пользователь передает UrlColumnName (имя столбца, в котором хранится URL-адрес) и можно безопасно отображать этот URL-адрес, функция возвращает URL-адрес.

Если URL-адрес небезопасен, функция возвращает пустой URL-адрес.

OuterTemplate.GetColumnDataForUnescapedOutput

Если пользователь передает Name (имя столбца, из которого требуется извлечь данные), эта функция получает данные столбца для вывода без escape-последовательностей.

Если пользователь передает MustBeOfType (ожидаемый тип столбца), функция возвращает контент, если указан правильный тип столбца. В противном случае данные не возвращаются.

OuterTemplate.GetTitle

Если пользователь передает Title (данные в столбце Title), эта функция возвращает заголовок.

Если Title пустой, имя страницы отображается как пустое или как заголовок.

OuterTemplate.FormatColumnIntoUrl

Если пользователь передает UrlColumnName (имя столбца, который содержит URL-адрес), эта функция возвращает URL-адрес, который содержится в столбце.

OuterTemplate.FormatValueIntoUrl

Если пользователь передает Value, которое представляет данные, найденные в типе столбца URL-адреса Windows SharePoint Services 3.0, столбец URL-адреса Windows SharePoint Services 3.0 возвращает URL-адрес и замещающий текст.

Возвращает URL-адрес, который содержится в столбце.

OuterTemplate.Replace

Если пользователь выполняет одно из следующих действий.

  • Передает Value и представляет строку, которую нужно заменить.

  • Передает Search и представляет строку, которую нужно выделить.

  • Передает Replace и представляет строку, на которую нужно заменить совпадение.

Эта функция возвращает результаты поиска и текст замены.

OuterTemplate.GetPageNameFromUrl

Если пользователь передает UrlColumnName (имя столбца элемента URL-адреса), функция возвращает имя страницы из URL-адреса.

OuterTemplate.GetPageNameFromUrlRecursive

Вспомогательный метод для GetPageNameFromUrl.

OuterTemplate.GetGroupName

Если пользователь передает значение столбца GroupName, функция возвращает имя группы в соответствующем формате.

Если значение пустое, функция возвращает пустое имя группы.

Если пользователь передает значение столбца GroupType (тип столбца группы), функция возвращает имя страницы, если тип — URL.

OuterTemplate.CallPresenceStatusIconTemplate

Если атрибут @SipAddress есть в текущей строке, функция формирует соответствующую разметку для создания значка присутствия для Microsoft Office Outlook 2007 или Microsoft Office Communicator 2007.

Добавление веб-части контента по запросу и ее настройка

  1. Откройте домашнюю страницу сайта, щелкните Действия сайта, а затем выберите команду Изменить страницу, чтобы просмотреть страницу в режиме редактирования.

  2. В одной из зон веб-части нажмите кнопку Добавить веб-часть, а затем выберите и добавьте веб-часть контента по запросу.

  3. Щелкните изменить, а затем выберите команду Изменить общую веб-часть.

  4. Измените свойства и добавьте свойства в веб-часть контента по запросу, если это необходимо. Дополнительные сведения см. в разделе Настройка веб-части "Контент по запросу" с помощью настраиваемых свойств.

    ПримечаниеПримечание

    При изменении веб-части контента по запросу в разделе Стили доступны два раскрывающихся списка: один для стиля группы и другой для стиля элемента. Эти элементы списка задаются шаблонами в файлах ItemStyle.xsl и Header.xsl.

  5. Измените значения выбранных операторов, переменных и выражений, изменив XSL, используя справочные материалы, указанные в этом разделе, как руководство. Например, можно изменить значения операторов select в разделе <div>, что выражение разрешало другую переменную.

Создание стиля элемента

  1. Определите стиль, аналогичный тому, который требуется создать.

  2. Скопируйте стиль и измените значения свойств name и match:

    <xsl:template name="ImageRight" match="Row[@Style='ImageRight']" mode="itemstyle">
    <xsl:template name="ImageRight2" match="Row[@Style='ImageRight2']" mode="itemstyle">
    

См. также

Задачи

Настройка веб-части "Контент по запросу" с помощью настраиваемых свойств

Настройка RSS-канала для веб-части запроса контента

Инструкции. Отображение настраиваемых полей в веб-части «Контент по запросу»