Procedimiento para personalizar XSL para el elemento web de consulta por contenido
Última modificación: lunes, 27 de septiembre de 2010
Hace referencia a: SharePoint Server 2010
Puede usar el elemento web de consulta de contenido para agregar contenido de varios orígenes de datos de todo el sitio web y presentarlo en un mismo lugar. Antes de configurar y personalizar el elemento web de consulta de contenido, debe tener en cuenta el diseño de marca y de sitio que desea obtener. Microsoft SharePoint Server 2010 incluye tres archivos de lenguaje de estilo extensible (XSL, Extensible Style Language) que se pueden modificar para representar los campos en los estilos que usa el elemento web de consulta de contenido para mostrar el contenido que reúne.
En este tema se identifican los tres archivos XSL que usa el elemento web de consulta de contenido y se describe cómo funcionan. Además, se identifican las plantillas y las variables que se pueden modificar y se describe cómo modificar los archivos para que el elemento web de consulta de contenido represente los datos con la apariencia y el funcionamiento que se especifiquen.
En la siguiente tabla se enumeran y detallan los tres archivos XSL que describen el elemento web de consulta de contenido.
Archivo |
Ubicación |
Descripción |
---|---|---|
ContentQueryMain.xsl |
\Style Library\XSL Style Sheets\ContentQueryMain.xsl |
|
ItemStyle.xsl |
\Style Library\XSL Style Sheets\ItemStyle.xsl |
Contiene plantillas que definen cómo mostrar un elemento. Estas plantillas reciben y procesan una fila de datos cada vez, lo que permite garantizar que el estilo y los datos de las filas de elementos sean coherentes. Se pueden recuperar datos sobre una fila mediante la directiva @Property. |
Header.xsl |
\Style Library\XSL Style Sheets\Header.xsl |
Contiene plantillas que definen cómo mostrar un encabezado y garantizan la coherencia de los encabezados de grupo. Las plantillas especificadas en Header.xsl reciben la siguiente fila de elementos para procesar, que generalmente es la primera fila de un grupo (a menos que existan varias columnas). Si hay varias columnas, las plantillas reciben la primera fila de la columna. Se pueden recuperar datos sobre la siguiente fila de elementos mediante la directiva @Property. Puede usar el parámetro $Group que contiene el nombre de la columna Agrupar por y el parámetro $GroupType que representa el tipo de columna de la columna Agrupar por. |
De forma predeterminada, las siguientes plantillas se incluyen en los archivos ItemStyle.xsl y Header.xsl. El archivo Header.xsl contiene las definiciones de estilo de grupo, mientras que el archivo ItemStyle.xsl contiene las definiciones que se aplican a los elementos de fila del elemento web de consulta de contenido. Estos estilos corresponden a las opciones disponibles en las listas desplegables de estilo de grupo y elemento que aparecen al elegir los estilos en la biblioteca de estilos.
Nota
En las siguientes tablas, las plantillas se muestran en el orden en que aparecen en los archivos.
Nombre de archivo |
Plantilla |
Acción del elemento web de consulta de contenido |
---|---|---|
ItemStyle.xsl |
Default |
LinkImage aparece a la izquierda. LinkTitle aparece en la parte superior. Description aparece en la parte inferior. |
ItemStyle.xsl |
NoImage |
LinkTitle aparece en la parte superior. Description aparece en la parte inferior. |
ItemStyle.xsl |
TitleOnly |
El elemento contiene sólo LinkTitle. |
ItemStyle.xsl |
Bullets |
El elemento contiene LinkTitle precedido por una viñeta. |
ItemStyle.xsl |
ImageRight |
LinkImage aparece a la derecha. LinkTitle aparece en la parte superior. Description aparece en la parte inferior. |
ItemStyle.xsl |
ImageTop |
LinkImage aparece en la parte superior. LinkTitle aparece en el centro. Description aparece en la parte inferior. |
ItemStyle.xsl |
ImageTopCentered |
LinkImage aparece en la parte superior y centrado. LinkTitle aparece en el centro. Description aparece en la parte inferior. |
ItemStyle.xsl |
LargeTitle |
LinkImage aparece a la izquierda. LargeLinkTitle aparece en la parte superior. Description aparece en la parte inferior. |
ItemStyle.xsl |
ClickableImage |
Contiene sólo LinkImage. |
ItemStyle.xsl |
NotClickableImage |
Contiene sólo Image, sin un vínculo. |
ItemStyle.xsl |
FixedImageSize |
LinkImage con restricción de tamaño a la izquierda. LinkTitle aparece en la parte superior. Description aparece en la parte inferior. |
ItemStyle.xsl |
TitleWithBackground |
Contiene LinkTitle con color de fondo. |
Nombre de archivo |
Plantilla |
Acción del elemento web de consulta de contenido |
---|---|---|
Header.xsl |
DefaultHeader |
Muestra el encabezado de grupo en tamaño de fuente mediano. |
Header.xsl |
LargeText |
Muestra el encabezado de grupo en tamaño de fuente grande. |
Header.xsl |
SmallText |
Muestra el encabezado de grupo en tamaño de fuente pequeño. |
Header.xsl |
Band |
Muestra el encabezado de grupo con color de fondo cuadrado. |
Header.xsl |
Centered |
Centra el encabezado de grupo. |
Header.xsl |
Separator |
Inserta una línea entre el encabezado de grupo y el contenido siguiente. |
Header.xsl |
Whitespace |
Inserta un espacio en blanco entre el encabezado de grupo y el contenido siguiente. |
Cada plantilla incluye dos secciones de instrucciones de procesamiento:
Secciones <xsl:variable> que procesan los datos y garantizan el formato correcto.
Secciones <div> que representan el código HTML e incluyen los datos.
A continuación, se incluye el código de plantilla para ImageRight, con comentarios:
///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>
Hay varias funciones disponibles para su uso en la sección <xsl:variables> de los archivos XSL de SharePoint Server 2010, según se describe en la siguiente tabla.
Función |
Descripción |
---|---|
OuterTemplate.GetSafeLink |
Cuando el usuario pasa UrlColumnName (el nombre de columna que contiene el valor ItemUrl), esta función devuelve una dirección URL que es segura para mostrar al elemento. Si la dirección URL no es segura para mostrar, la función devuelve una dirección URL en blanco. Si el elemento no se transfiere, la función devuelve la dirección URL CopyUtil. |
OuterTemplate.GetSafeStaticUrl |
Cuando el usuario pasa UrlColumnName (el nombre de la columna donde se almacena la dirección URL) y si la dirección URL es segura para mostrar, la función devuelve la dirección URL. Si la dirección URL no es segura para mostrar, la función devuelve una dirección URL en blanco. |
OuterTemplate.GetColumnDataForUnescapedOutput |
Cuando el usuario pasa Name (el nombre de columna desde la que se recuperarán los datos), esta función obtiene datos de columna para resultados sin caracteres de escape. Cuando el usuario pasa MustBeOfType (el tipo de columna esperado), la función devuelve el contenido si la columna es del tipo correcto. De lo contrario, no devuelve ningún dato. |
OuterTemplate.GetTitle |
Cuando el usuario pasa Title (los datos de la columna Title), esta función devuelve un título. Si Title está en blanco, el nombre de página aparece en blanco o como el título. |
OuterTemplate.FormatColumnIntoUrl |
Cuando el usuario pasa UrlColumnName (el nombre de columna que contiene una dirección URL), esta función devuelve la dirección URL incluida en la columna. |
OuterTemplate.FormatValueIntoUrl |
Cuando el usuario pasa un Value que representa los datos de un tipo de columna de dirección URL de Windows SharePoint Services 3.0, la columna de dirección URL de Windows SharePoint Services 3.0 devuelve la dirección URL y el texto alternativo. Devuelve la dirección URL incluida en la columna. |
OuterTemplate.Replace |
Si el usuario realiza una de las siguientes acciones:
Esta función devuelve el texto de búsqueda y reemplazo adecuado. |
OuterTemplate.GetPageNameFromUrl |
Cuando el usuario pasa UrlColumnName (el nombre de columna de la dirección URL del elemento), la función devuelve el nombre de página desde la dirección URL. |
OuterTemplate.GetPageNameFromUrlRecursive |
Método auxiliar para GetPageNameFromUrl. |
OuterTemplate.GetGroupName |
Cuando el usuario pasa el valor de la columna GroupName, la función devuelve el nombre de grupo en el formato adecuado. Si el valor está vacío, devuelve un nombre de grupo en blanco. Cuando el usuario pasa el valor de la columna GroupType (el tipo de columna para el grupo), la función devuelve el nombre de página si el tipo es URL. |
OuterTemplate.CallPresenceStatusIconTemplate |
Si el atributo @SipAddress existe en la fila actual, genera el marcado adecuado para crear un icono de presencia para Microsoft Office Outlook 2007 o Microsoft Office Communicator 2007. |
Para agregar un elemento web de consulta de contenido y personalizar el XSL del elemento web de consulta de contenido
Vaya a la página principal del sitio, haga clic en Acciones del sitio y elija Editar página para desproteger la página en modo de edición.
En una de las zonas de elementos web, haga clic en Agregar elementos web y, a continuación, seleccione y agregue un elemento web de consulta de contenido.
Haga clic en Editar y, a continuación, elija Modificar elemento web compartido.
Modifique las propiedades y agregue campos al elemento web de consulta de contenido según sea necesario. Para obtener más información, consulte Procedimiento para personalizar el elemento web de consulta de contenido mediante propiedades personalizadas.
Nota
Al modificar el elemento web de consulta de contenido, existen dos listas desplegables en la sección Estilos: una para el estilo de Grupo y otra para el estilo de Elemento. Estos elementos de lista se definen mediante las plantillas de los archivos ItemStyle.xsl y Header.xsl.
Puede editar el archivo XSL para modificar instrucciones select, variables y expresiones, usando la información de referencia de este tema como guía. Por ejemplo, puede modificar valores de instrucciones select en la sección <div> para indicar que la expresión se resuelva en otra variable.
Para crear un estilo de elemento
Identifique un estilo similar al que desea crear.
Copie el estilo y cambie los valores de las propiedades name y match:
<xsl:template name="ImageRight" match="Row[@Style='ImageRight']" mode="itemstyle"> <xsl:template name="ImageRight2" match="Row[@Style='ImageRight2']" mode="itemstyle">
Vea también
Tareas
Procedimiento para personalizar RSS para el elemento web de consulta de contenido
Procedimiento para mostrar campos personalizados en un elemento web de consulta de contenido