Практическое руководство. Настройка XSL для веб-части контента по запросу
Дата последнего изменения: 27 сентября 2010 г.
Применимо к: SharePoint Server 2010
Веб-часть контента по запросу можно использовать для объединения контента из нескольких источников данных на веб-сайте и дальнейшего его представления в одном месте. Перед настройкой и изменением веб-части контента по запросу следует проанализировать фирменный стиль и дизайн сайта, которые необходимо получить. В Microsoft SharePoint Server 2010 включено три XSL-файла, которые можно изменить для отображения полей в стилях, которые используются веб-частью контента по запроса для отображения объединяемого контента.
В этом разделе описываются эти три XSL-файла, используемые веб-часть контента по запросу, а также принципы их работы; описываются шаблоны и переменные, которые можно изменить, а также то, как изменить эти файлы, чтобы веб-часть контента по запросу отображала данные с заданным внешним видом.
В следующей таблице указываются и описываются три XSL-файла, описывающие веб-часть контента по запросу.
File |
Расположение |
Описание |
---|---|---|
ContentQueryMain.xsl |
\Style Library\XSL Style Sheets\ContentQueryMain.xsl |
|
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 |
Если пользователь выполняет одно из следующих действий.
Эта функция возвращает результаты поиска и текст замены. |
OuterTemplate.GetPageNameFromUrl |
Если пользователь передает UrlColumnName (имя столбца элемента URL-адреса), функция возвращает имя страницы из URL-адреса. |
OuterTemplate.GetPageNameFromUrlRecursive |
Вспомогательный метод для GetPageNameFromUrl. |
OuterTemplate.GetGroupName |
Если пользователь передает значение столбца GroupName, функция возвращает имя группы в соответствующем формате. Если значение пустое, функция возвращает пустое имя группы. Если пользователь передает значение столбца GroupType (тип столбца группы), функция возвращает имя страницы, если тип — URL. |
OuterTemplate.CallPresenceStatusIconTemplate |
Если атрибут @SipAddress есть в текущей строке, функция формирует соответствующую разметку для создания значка присутствия для Microsoft Office Outlook 2007 или Microsoft Office Communicator 2007. |
Добавление веб-части контента по запросу и ее настройка
Откройте домашнюю страницу сайта, щелкните Действия сайта, а затем выберите команду Изменить страницу, чтобы просмотреть страницу в режиме редактирования.
В одной из зон веб-части нажмите кнопку Добавить веб-часть, а затем выберите и добавьте веб-часть контента по запросу.
Щелкните изменить, а затем выберите команду Изменить общую веб-часть.
Измените свойства и добавьте свойства в веб-часть контента по запросу, если это необходимо. Дополнительные сведения см. в разделе Настройка веб-части "Контент по запросу" с помощью настраиваемых свойств.
Примечание При изменении веб-части контента по запросу в разделе Стили доступны два раскрывающихся списка: один для стиля группы и другой для стиля элемента. Эти элементы списка задаются шаблонами в файлах ItemStyle.xsl и Header.xsl.
Измените значения выбранных операторов, переменных и выражений, изменив XSL, используя справочные материалы, указанные в этом разделе, как руководство. Например, можно изменить значения операторов select в разделе <div>, что выражение разрешало другую переменную.
Создание стиля элемента
Определите стиль, аналогичный тому, который требуется создать.
Скопируйте стиль и измените значения свойств name и match:
<xsl:template name="ImageRight" match="Row[@Style='ImageRight']" mode="itemstyle"> <xsl:template name="ImageRight2" match="Row[@Style='ImageRight2']" mode="itemstyle">
См. также
Задачи
Настройка веб-части "Контент по запросу" с помощью настраиваемых свойств
Настройка RSS-канала для веб-части запроса контента
Инструкции. Отображение настраиваемых полей в веб-части «Контент по запросу»