Transformation XSLT des résultats principaux de la recherche de contenu d'entreprise
Vous pouvez modifier la transformation XLST du composant WebPart Résultats principaux de la recherche pour changer le mode d'affichage des résultats dans la page des résultats de la recherche. Cette rubrique présente la XSLT du composant WebPart Résultats principaux de la recherche, ainsi que la manière de la personnaliser.
Les scénarios suivants présentent des exemples de situations où la modification de ce code peut être utile :
Vous souhaitez apporter des modifications mineures à l'affichage des résultats de recherche en modifiant les modèles existants de la XSLT par défaut.
Vous souhaitez apporter des modifications plus complexes à l'affichage des résultats de recherche en ajoutant de nouveaux modèles à la XSLT.
Vous souhaitez modifier l'affichage de certains résultats de manière conditionnelle, en fonction d'une des valeurs de propriété renvoyées.
Vous devez modifier la XSLT pour afficher une propriété que vous avez ajoutée à l'ensemble de propriétés par défaut renvoyé dans les résultats de recherche.
Vous souhaitez modifier les modèles d'affichage pour utiliser une classe CSS personnalisée à la place des classes CSS par défaut.
Modification de la XSLT du composant WebPart Résultats principaux de la recherche
La XSLT du composant WebPart Résultats principaux de la recherche est spécifiée dans la propriété XSL du composant WebPart. Vous pouvez afficher et modifier cette propriété à partir du volet de l'outil Composant WebPart Résultats principaux de la recherche, dans la zone des outils du composant WebPart Formulaire de données. Pour plus d'informations sur l'affichage et la modification de cette propriété, voir Procédure : afficher et modifier la transformation XSLT des résultats de la recherche.
Examen des données XML des résultats de la recherche
Avant de commencer à modifier la XSLT du composant WebPart Résultats principaux de la recherche, il est utile de connaître le contenu des données XML des résultats.
L'exemple de code suivant représente un extrait des données XML des résultats de la recherche.
Notes
Pour afficher ces données, suivez les étapes décrites dans la rubrique Procédure : afficher les données XML des résultats de la recherche.
<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>
Le contenu des données XML des résultats de la recherche est déterminé par les éléments suivants :
Les propriétés d'affichage du composant WebPart Search Core Results.
Les propriétés gérées spécifiées dans le paramètre Results Query Options - Selected Columns.
Notes
Pour plus d'informations sur la manière de modifier les propriété gérées comprises dans les résultats de recherche, voir Procédure : modifier les propriétés retournées dans les résultats de recherches principaux.
Familiarisez-vous avec les données XML de résultats avant de modifier la XSLT. En comprenant la structure de ce qui est transformé, il n'en est que plus facile d'apporter vos modifications.
Utilisation des modèles XSL
Cette section fournit des informations sur les modèles définis et utilisés dans la XSLT Résultats principaux de la recherche.
Modèle racine
Pour commencer l'examen de la XSLT des résultats principaux de la recherche, penchez-vous sur la section du code dans laquelle la transformation est initiée. Cette section se situe à la fin du code ; vous pouvez la trouver en faisant une recherche sur la balise suivante :
<xsl:template match="/">
La syntaxe suivante définit un modèle et l'associe au nœud racine du code XML :
<All_Results>
…
</All_Results>
La XSLT complète de ce modèle est la suivante :
<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>
Le modèle racine ne transforme aucune donnée XML de résultats. Sa fonction première consiste à déterminer le modèle à appliquer en fonction de tests conditionnels sur les données XML des résultats de recherche.
Ces tests tentent de déterminer lequel des scénarios de composant WebPart Résultats de la recherche s'applique :
Le composant WebPart Résultats principaux de la recherche contient des résultats de recherche.
Le composant WebPart Résultats principaux de la recherche ne contient aucun résultat de recherche, car une des conditions suivantes est avérée :
Aucune requête de recherche n'a été publiée.
Aucun résultat pertinent n'a été renvoyé par la requête de recherche.
Modèles Aucun résultat de recherche
La XSLT commence par vérifier les conditions suivantes :
Existe-t-il une requête de recherche ?
Le jeu de résultats de recherche est-il vide ?
Si vous allez directement sur la page des résultats sans spécifier d'objet de recherche, ou si le composant WebPart a été configuré pour utiliser une requête par mot clé fixe et qu'aucun mot clé n'a été spécifié, la première condition renvoie true. Si la condition renvoie true, le modèle XSL appliqué au corps principal du composant WebPart Résultats principaux de la recherche est le modèle dvt_1.noKeyword. L'illustration suivante montre comment ce modèle apparaît sur la page des résultats :
Pour en modifier l'apparence, dans la XSLT du composant WebPart Résultats principaux de la recherche, recherchez la balise d'ouverture de ce modèle :
<xsl:template name="dvt_1.noKeyword">
et modifiez-en le contenu.
La seconde condition renvoie true si la requête de recherche entrée par l'utilisateur n'a renvoyé aucun résultat. Dans ce cas, le modèle appliqué au corps principal du composant WebPart Résultats principaux de la recherche est le modèle dvt_1.empty. L'illustration suivante montre comment ce modèle apparaît sur la page des résultats :
Pour modifier les liens de texte ou d'action affichés, recherchez la balise d'ouverture de ce modèle dans la XSLT :
<xsl:template name="dvt_1.empty">
et modifiez-en le contenu.
Modèles Résultats de la recherche
Si des résultats de recherche sont renvoyés, car aucune des conditions décrites dans la section précédente ne renvoie true, le modèle spécifié dans la balise <xsl:otherwise>
de la XSLT de ce modèle est alors appliqué au corps principal du composant WebPart Résultats principaux de la recherche.
Pour afficher la XSLT de ce modèle, recherchez la balise suivante dans le code :
<xls:template name="dvt_1.body">
Le code de transformation de ce modèle est utilisé principalement pour l'en-tête affiché dans les résultats de la recherche ; il convient donc de modifier ce modèle pour apporter toute modification à l'en-tête. L'illustration suivante représente l'en-tête par défaut :
Vers la fin du code de ce modèle, après le code de transformation de l'en-tête des résultats de la recherche, figure la ligne suivante de la XSLT :
<xsl:apply-templates />
Cette ligne de code indique que la transformation XSL doit se poursuivre et applique les modèles aux nœuds enfants sur lesquels une correspondance a été trouvée. Si vous examinez la balise de fermeture du modèle dvt_1.body, vous verrez que la ligne suivante de la XSLT est :
<xsl:template match="Result">
Ce code définit le modèle à associer au nœud Résultat et contient la XSLT à générer pour afficher les résultats de la recherche, qui inclut les éléments suivants pour chaque résultat :
Icône/image
Titre
Description
Métadonnées
La XSLT par défaut pour les métadonnées de résultats de recherche inclut les valeurs des propriétés Path, Size, Author et LastModified.
Au sein de ces sections, vous remarquerez que la XSLT appelle d'autres modèles. Ceux-ci sont présentés en détail dans les sections suivantes.
HitHighlighting, modèle
Le modèle HitHighlighting est responsable de la surbrillance des termes de recherche affichés dans les sections de résultats suivantes :
Titre
URL
Description
Pour comprendre le fonctionnement de cette XSLT, il convient d'examiner les éléments enfants associés au modèle hithighlighting de la balise <Result></Result>
dans les données XML des résultats de recherche. L'exemple suivant illustre un cas dans lequel les mots à rechercher entrés par l'utilisateur étaient « SharePoint », « Namespace » et « Class » :
<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>
Les éléments <hithighlightedsummary></hithighlightedsummary>
, <HHtitle></HHtitle>
et <HHUrl></HHUrl>
ont des éléments enfants intégrés à leurs données XML qui font office de wrappers pour chacun des termes à rechercher trouvés dans les données XML.
Lorsqu'il existe plusieurs mots à rechercher, chaque mot est contenu dans un élément différent ; toutefois le même élément est utilisé pour différentes instances du même mot à rechercher.
Comme illustré dans l'exemple précédent, la balise <c0></c0>
contient le premier mot à rechercher, l'élément <c1></c1>
le deuxième, etc.
Vous pouvez modifier le modèle HitHighlighting pour personnaliser la façon dont les mots à rechercher sont mis en surbrillance dans les résultats. Par exemple, vous pouvez modifier la couleur du texte surligné et utiliser différentes couleurs pour représenter différents mots à rechercher.
L'exemple de code XSLT suivant montre comment le faire :
<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>
Les sections mises en surbrillance de l'exemple identifient le code ajouté au code XSLT par défaut pour modifier la couleur utilisée pour surligner les mots à rechercher. Cette section de code figure dans le modèle HitHighlighting. Pour trouver ce modèle, faites une recherche sur :
<xsl:template name="Hithightlighting">
dans la XSLT.
DisplaySize, modèle
Le modèle DisplaySize est responsable de l'affichage de la propriété Size renvoyée dans les résultats. La XSLT de ce modèle calcule l'unité la plus adaptée à utiliser (octets, Ko ou Mo) et ajuste la valeur de la taille affichée en conséquence.
DisplayString, modèle
Le modèle DisplayString est un modèle générique qui affiche les valeurs de chaîne renvoyées dans les données XML des résultats. La XSLT par défaut utilise ce modèle pour afficher les propriétés Author et LastModified.
Voir aussi
Autres ressources
Personnalisation des résultats de recherche de contenu d'entreprise
Procédure : afficher et modifier la transformation XSLT des résultats de la recherche
Procédure : modifier les propriétés retournées dans les résultats de recherches principaux
Procédure : afficher les données XML des résultats de la recherche
Procédure : modifier les propriétés retournées dans les résultats de recherches principaux