Compartir a través de


Transformación XSLT de resultados principales del motor de búsqueda Enterprise Search

Puede modificar la transformación XSLT del elemento web de resultados principales de la búsqueda (XSLT) para cambiar la forma en que se muestran los resultados de la búsqueda en las páginas de resultados de la búsqueda. En este tema se describe la transformación XSLT del elemento web de resultados principales de la búsqueda y la forma de personalizarla.

Los siguientes escenarios son ejemplos de cuándo puede ser útil modificar este código:

  • Desea realizar pequeños cambios en la presentación de resultados de la búsqueda mediante la modificación de las plantillas existentes en la transformación XSLT predeterminada.

  • Desea realizar cambios más complejos en la presentación de resultados de búsqueda y agregar nuevas plantillas a la transformación XSLT.

  • Desea cambiar la presentación de determinados resultados, en función de uno de los valores de propiedad que se devuelven.

  • Necesita modificar la transformación XSLT para mostrar una propiedad que ha agregado al conjunto predeterminado de propiedades devuelto en los resultados de la búsqueda.

  • Desea modificar las plantillas de presentación para usar una clase de hoja de estilo en cascada personalizada en lugar de las clases de hoja de estilo en cascada predeterminadas.

Modificación de la transformación XSLT del elemento web de resultados principales de la búsqueda

La transformación XSLT del elemento web de resultados principales de la búsqueda se especifica en la propiedad XSL del elemento web. Puede ver y modificar esta propiedad en el panel de herramientas de elementos web de resultados principales de la búsqueda, en el elemento de herramientas del elemento web de formulario de datos. Para obtener más información acerca de cómo ver y modificar esta propiedad, consulte Procedimiento para ver y editar la transformación XSLT de los resultados de la búsqueda.

Revisión de datos XML de resultados de la búsqueda

Antes de empezar a modificar la transformación XSLT del elemento web de resultados principales de la búsqueda, es útil saber qué contienen los datos XML de los resultados.

El ejemplo de código siguiente es un fragmento de código de los datos XML de los resultados de la búsqueda.

Nota

Para ver estos datos, siga los pasos descritos en Procedimiento para visualizar datos XML de los resultados de la búsqueda.

<All_Results>
  <Result>
    <id>1</id> 
    <rank>713</rank> 
    <title>Microsoft.SharePoint Namespace</title> 
    <author /> 
    <size>39058</size> 
    <url>https://msdn.microsoft.com/library/default.asp?url=/library/en-     us/spptsdk/html/tsnsMicrosoftSharePoint_SV01017995.asp</url> 
    <description>Microsoft.SharePoint Namespace</description> 
    <sitename> https://msdn.microsoft.com/library</sitename> 
    <collapsingstatus>0</collapsingstatus>
    <hithighlightedsummary>
      <…>
    </hithighlightedsummary>
    <hithighlightedproperties>
      <…>
    </hithighlightedproperties>
    <…>
   </Result>
   <Result>
    <…>
    <…>
   </Result>
</All_Results>  

Los elementos incluidos en los datos XML de los resultados de la búsqueda están determinados por los siguientes elementos:

  • Las propiedades de visualización del elemento web Search Core Results.

  • Las propiedades administradas especificadas en la opción Results Query Options - Selected Columns.

Nota

Para obtener más información acerca de cómo cambiar propiedades administradas que se incluyen en los resultados de la búsqueda, consulte Procedimiento para cambiar las propiedades devueltas en los resultados de búsqueda principales.

Familiarícese con los datos XML de los resultados antes de realizar modificaciones en la transformación XSLT. Si conoce la estructura de lo que se va a transformar, puede realizar más fácilmente el cambio.

Trabajar con plantillas XSL

En esta sección se proporciona información sobre las plantillas que se definen y usan en la XSLT de resultados principales de la búsqueda.

Plantilla raíz

Para empezar a analizar la XSLT de los resultados principales de la búsqueda, consulte la sección del código donde se inicia la transformación. Esta sección se encuentra al final del código y puede encontrarlo si busca la siguiente etiqueta:

<xsl:template match="/">

La sintaxis siguiente define una plantilla y la asocia al nodo raíz del código XML:

<All_Results>
…
</All_Results>

A continuación se indica la transformación XSLT completa para esta plantilla:

  <xsl:template match="/">
    <xsl:variable name="Rows" select="/All_Results/Result" />
    <xsl:variable name="RowCount" select="count($Rows)" />
    <xsl:variable name="IsEmpty" select="$RowCount = 0" />
    <xsl:if test="$AlertMeLink">
      <input type="hidden" name="P_Query" />
      <input type="hidden" name="P_LastNotificationTime" />
    </xsl:if>
    <xsl:choose>
      <xsl:when test="$IsNoKeyword = 'True'" >
        <xsl:call-template name="dvt_1.noKeyword" />
      </xsl:when>
      <xsl:when test="$IsEmpty">
        <xsl:call-template name="dvt_1.empty" />
      </xsl:when>
      <xsl:otherwise>
        <xsl:call-template name="dvt_1.body"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

La plantilla raíz no transforma ninguno de los datos XML de los resultados. Su función principal consiste en determinar qué plantilla se debe aplicar a continuación, en función de pruebas condicionales realizadas en los datos XML de resultados de la búsqueda.

Las pruebas condicionales realizadas en la transformación XSLT intentan determinar cuál de los siguientes escenarios de elementos web de resultados de la búsqueda debe aplicarse:

  • El elemento web de resultados principales de la búsqueda contiene resultados de búsqueda.

  • El elemento web de resultados principales de la búsqueda no contiene resultados de búsqueda, porque se cumple alguna de las condiciones siguientes:

    • No se ha emitido ninguna consulta de búsqueda.

    • No se han devuelto resultados relevantes para la consulta de búsqueda.

No hay plantillas de resultados de búsqueda

La transformación XSLT realiza primero pruebas para ver si se cumplen las condiciones siguientes:

  • ¿Existe alguna consulta de búsqueda?

  • ¿Está vacío el conjunto de los resultados de la búsqueda?

Si se desplaza directamente hasta la página de resultados sin especificar las palabras de búsqueda o si el elemento web se configuró para usar una consulta de palabras clave fija pero no se ha especificado ninguna palabra clave, la primera condición devolverá true. Si la condición devuelve true, la plantilla XSL aplicada para el cuerpo principal del elemento web de resultados principales de la búsqueda es la plantilla dvt_1.noKeyword. La siguiente ilustración muestra cómo se ve esta plantilla en la página de resultados:

Plantilla XSL dvt_1.noKeyword

Para modificar el aspecto, en la XSLT del elemento web de resultados principales de la búsqueda, busque esta plantilla de etiqueta de apertura:

<xsl:template name="dvt_1.noKeyword">

y modifique el contenido.

La segunda condición devuelve true si la consulta de búsqueda introducida por el usuario no ha devuelto ningún resultado. En este caso, la plantilla aplicada al cuerpo principal del elemento web de los resultados principales de la búsqueda es la plantilla dvt_1.Empty. La siguiente ilustración muestra el aspecto de esta plantilla en la página de resultados:

Plantilla XSL dvt_1.empty

Para modificar los vínculos de texto o acción que se muestran, busque la etiqueta de apertura de esta plantilla en la transformación XSLT:

<xsl:template name="dvt_1.empty">

y, a continuación, modifique el contenido.

Plantillas de resultados de búsqueda

Si se devuelven resultados de la búsqueda debido a que ninguna de las condiciones que se describen en la sección anterior devuelven true, la plantilla especificada en la etiqueta <xsl:otherwise> de la transformación XSLT de esta plantilla se aplica al cuerpo principal del elemento web de resultados principales de la búsqueda.

Para ver la transformación XSLT de esta plantilla, busque el siguiente código:

<xls:template name="dvt_1.body">

El código de transformación de esta plantilla se usa principalmente para el encabezado que se muestra con los resultados de la búsqueda; se podría modificar esta plantilla en caso de que desease realizar cambios en el encabezado. La siguiente ilustración muestra el encabezado predeterminado:

Plantilla XSL dvt_1.body

Hacia el final de este código de plantilla y después del código de transformación del encabezado de resultados de búsqueda, encontrará la siguiente línea de transformación XSLT:

<xsl:apply-templates />

Esta línea de código indica que la transformación XSL debe continuar y aplicar plantillas a los nodos secundarios donde se encuentre una coincidencia. Si observa la etiqueta de cierre de la plantilla dvt_1.Body, verá que la siguiente línea de XSLT es la que se indica a continuación:

<xsl:template match="Result">

Este código define la plantilla que se va a asociar el nodo de resultados y contiene la transformación XSLT para crear la presentación de los resultados de la búsqueda, que incluye los siguientes elementos para cada resultado:

  • Icono/imagen

  • Título

  • Descripción

  • Metadatos

La transformación XSLT predeterminada de los metadatos de los resultados de la búsqueda incluye los valores de las propiedades Path, Size, Author y LastModified.

En esas secciones, observará que la XSLT llama a plantillas adicionales. Éstas se describen detalladamente en las secciones siguientes.

Plantilla HitHighlighting

La plantilla HitHighlighting se encarga de resaltar las palabras de búsqueda que se muestran en las secciones de resultados siguientes:

  • Título

  • Dirección URL

  • Descripción

Para comprender cómo funciona esta transformación XSLT, debe fijarse en los elementos secundarios relacionados con hithighlighting de la etiqueta <Result></Result> de los datos XML de los resultados. En el ejemplo siguiente se muestra un caso donde las palabras de búsqueda introducidas por el usuario fueron "SharePoint", "espacio de nombres" y "clase":

<hithighlightedsummary>
  <c0>SharePoint</c0> <c1>namespace</c1> provides types and members that can be used for working with a <c0>SharePoint</c0> site  <ddd /> a top-level <c2>class</c2> that represents a <c0>SharePoint</c0> site and provides access to its collection of subsites <ddd /> <c0>SharePoint</c0> <c1>namespace</c1> and a brief description of each.
</hithighlightedsummary>
<hithighlightedproperties>
  <HHTitle>Microsoft.<c0>SharePoint</c0> <c1>Namespace</c1></HHTitle>
  <HHUrl>https://msdn.microsoft.com/library/default.asp?url=/library/en-     us/spptsdk/html/tsnsMicrosoft<c0>SharePoint</c0>_SV01017995.asp</HHUrl>
</hithighlightedproperties>

Los elementos < hithighlightedsummary></hithighlightedsummary>,<HHtitle></HHtitle> y <HHUrl></HHUrl> tienen elementos secundarios incrustados en sus datos XML que actúan como contenedores para cada una de las palabras de búsqueda que se encuentran en los datos XML.

Cuando hay varias palabras de búsqueda, cada palabra se encuentra en un elemento diferente; sin embargo el mismo elemento se usa para las distintas instancias de la misma palabra de búsqueda.

Como se muestra en el ejemplo anterior, la etiqueta <c0></c0> contiene la primera palabra de búsqueda, el elemento <c1></c1>, la segunda y así sucesivamente.

Puede modificar la plantilla HitHighlighting para personalizar la forma de resaltar las palabras de búsqueda en los resultados. Por ejemplo, puede cambiar el color del texto resaltado y usar diferentes colores para representar las distintas palabras de búsqueda.

En el ejemplo de código de XSLT siguiente se muestra cómo hacerlo:

<xsl:template match="c0">
    <b style="color: #ff0033">
      <xsl:value-of select="."/>
    </b>
  </xsl:template>
  <xsl:template match="c1">
    <b style="color: #990066">
      <xsl:value-of select="."/>
    </b>
</xsl:template>

Las secciones resaltadas del ejemplo identifican el código que se ha agregado al código XSLT predeterminado a fin de cambiar el color usado para resaltar las palabras de búsqueda. Encontrará esta sección de código en la plantilla HitHighlighting. Para localizar esta plantilla, busque:

<xsl:template name="Hithightlighting">

en la XSLT.

Plantilla DisplaySize

La plantilla DisplaySize se encarga de mostrar la propiedad Size que devuelven los resultados. Esta transformación XSLT de plantilla calcula la unidad más adecuada (selecciona bytes, KB o MB) y ajusta el valor de tamaño presentado que corresponda.

Plantilla DisplayString

La plantilla DisplayString es una plantilla genérica que sirve para mostrar valores de cadena devueltos en los datos XML de los resultados. La XSLT predeterminada usa esta plantilla para mostrar las propiedades Author y LastModified.

Vea también

Otros recursos

Personalización de los resultados del motor de búsqueda Enterprise Search
Procedimiento para ver y editar la transformación XSLT de los resultados de la búsqueda
Procedimiento para cambiar las propiedades devueltas en los resultados de búsqueda principales
Procedimiento para visualizar datos XML de los resultados de la búsqueda
Procedimiento para cambiar las propiedades devueltas en los resultados de búsqueda principales