Paso 3: Crear el código de transformación XSLT
El código de elementos web de búsqueda personalizados convierte los resultados de la búsqueda en datos XML y, a continuación, aplica una transformación XSLT al código XML y le da formato para su presentación en el explorador. El código de transformación empleado en este ejemplo es una versión modificada de la transformación XSLT usada por el elemento web de resultados de búsqueda básica. Para obtener más información, consulte Transformación XSLT de resultados principales del motor de búsqueda Enterprise Search.
Nota
La ruta de acceso virtual a productXSL.XSL especificada en este ejemplo de código es el directorio _layouts virtual
, que equivale a la ruta de acceso física siguiente: \Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\.
Si guarda productXSL.xsl en una ubicación diferente, debe cambiar la ruta de acceso para que el ejemplo funcione correctamente.
Para crear el código de transformación XSLT
Cree el archivo productXSL.xsl en la ruta de acceso siguiente.
\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\
Para modificar el archivo, puede usar una herramienta de desarrollo, como Visual Studio 2005, o un editor de texto, como Bloc de notas.
Agregue el siguiente código a productXSL.xsl.
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <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:choose> <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> <xsl:template name="dvt_1.empty"> <span class="srch-description" id="CSR_NO_RESULTS"> No results matching your search were found. <ol> <li>Check your spelling. Are the words in your query spelled correctly?</li> <li>Try using synonyms. Maybe what you're looking for uses slightly different words.</li> <li>Make your search more general. Try more general terms in place of specific ones.</li> <li>Try your search in a different scope. Different scopes can return different results.</li> </ol> </span> </xsl:template> <xsl:template name="dvt_1.body"> <xsl:apply-templates /> </xsl:template> <xsl:template match="Result"> <xsl:variable name="id" select="PRODUCTID"/> <xsl:variable name="url" select="PATH"/> <span class="srch-Title"> <a href="{$url}" id="{concat('CSR_',$id)}" title="{$url}"> <xsl:value-of select="PRODUCTNAME"/></a> <br/> </span> <span class="srch-Metadata"> <xsl:call-template name="DisplayString"> <xsl:with-param name="str" select="PRODUCTID" /> <xsl:with-param name="prop">Product ID:</xsl:with-param> </xsl:call-template> <br/> </span> <span class="srch-URL"> <a href="{$url}" id="{concat('CSR_U_',$id)}" title="{$url}"> <xsl:value-of select="PATH"/> </a><br/><br/> </span> </xsl:template> <xsl:template name="DisplayString"> <xsl:param name="str" /> <xsl:param name="prop" /> <xsl:if test='string-length($str) > 0'> <xsl:value-of select="$prop" />  <xsl:value-of select="$str" /> </xsl:if> </xsl:template> </xsl:stylesheet>
Puede encontrar el código completo del archivo de transformación XSLT productXSL.xsl en Ejemplo: Transformación XSLT del ejemplo de búsqueda de AdventureWorks.
Vea también
Otros recursos
Tutorial: Crear un elemento web de ASP.NET para el ejemplo de aplicación de datos profesionales de AdventureWorks
Paso 1: Configurar el proyecto para el elemento web de búsqueda personalizada
Paso 2: Agregar el código al elemento web de búsqueda personalizado
Paso 4: Implementar el elemento web personalizado de búsqueda
Paso 5: Probar el elemento web del Catálogo de datos profesionales de la búsqueda