Procédure : personnaliser le format XSL pour le composant WebPart Contenu par requête

Dernière modification : lundi 27 septembre 2010

S’applique à : SharePoint Server 2010

Vous pouvez utiliser le composant WebPart Contenu par requête pour agréger le contenu de plusieurs sources de données de votre site Web, et le présenter dans un seul emplacement. Avant de configurer et personnaliser le composant WebPart Contenu par requête, vous devez envisager la personnalisation et la conception du site que vous souhaitez obtenir. Microsoft SharePoint Server 2010 intègre trois fichiers XSL (Extensible Style Language) que vous pouvez modifier pour le rendu des champs dans des styles utilisés par le composant WebPart Contenu par requête pour afficher le contenu agrégé.

Cette rubrique identifie les trois fichiers XSL utilisés par le composant WebPart Contenu par requête et décrit leur fonctionnement ; identifie les modèles et les variables pouvant être modifiés ; et explique comment modifier les fichiers afin que le composant WebPart Contenu par requête effectue le rendu des données avec l’apparence spécifiée.

Le tableau suivant contient la liste et la description des trois fichiers XSL qui décrivent le composant WebPart Contenu par requête.

Fichier

Emplacement

Description

ContentQueryMain.xsl

\Style Library\XSL Style Sheets\ContentQueryMain.xsl

  • Contient la logique qui génère les appels appropriés aux modèles d'en-tête et d'élément pour chaque élément.

  • Contient les fonctions qui aident les concepteurs à modifier les transformations XSLT d'en-tête et d'élément.

  • Reçoit le contenu, l'analyse et envoie les parties appropriées aux modèles de style d'élément et d'en-tête.

  • Conserve la structure du composant WebPart Contenu par requête.

  • Stocke les données récupérées lors de l'interrogation du contenu dans le chemin /dsQueryResponse/Rows/Row.

ItemStyle.xsl

\Style Library\XSL Style Sheets\ItemStyle.xsl

Contient les modèles qui définissent le mode d'affichage d'un élément. Ces modèles reçoivent et analysent une ligne de données à la fois, en s'assurant que le style et les données des lignes sont cohérents.

Vous pouvez récupérer des données sur une ligne à l'aide de la directive @Property.

Header.xsl

\Style Library\XSL Style Sheets\Header.xsl

Contient les modèles qui définissent le mode d'affichage d'un en-tête et assurent la cohérence d'en-têtes de groupes.

Les modèles spécifiés dans le fichier Header.xsl reçoivent la ligne de l'élément suivant à traiter, généralement la première ligne d'un groupe, sauf s'il existe plusieurs colonnes. S'il existe plusieurs colonnes, les modèles reçoivent la première ligne de la colonne.

Vous pouvez récupérer des données sur la ligne de l'élément suivant à l'aide de la directive @Property. Vous pouvez utiliser le paramètre $Group qui contient le nom de colonne groupby et le $GroupType qui représente le type de la colonne groupby.

Par défaut, les modèles suivants sont inclus dans les fichiers ItemStyle.xsl et Header.xsl. Le fichier Header.xsl contient les définitions des styles de groupe, alors que le fichier ItemStyle.xsl contient les définitions qui s’appliquent aux éléments des lignes dans le composant WebPart Contenu par requête. Ces styles correspondent aux options disponibles dans les listes déroulantes Style du groupe et Style d’élément qui s’affichent lorsque vous sélectionnez les styles dans la Bibliothèque de styles.

Notes

Dans les tableaux suivants, les modèles sont répertoriés dans leur ordre d'apparition dans les fichiers.

Nom du fichier

Modèle

Action du composant WebPart Contenu par requête

ItemStyle.xsl

Default

LinkImage se trouve à gauche.

LinkTitle se trouve en haut.

Description se trouve en bas.

ItemStyle.xsl

NoImage

LinkTitle se trouve en haut.

Description se trouve en bas.

ItemStyle.xsl

TitleOnly

L'élément contient uniquement LinkTitle.

ItemStyle.xsl

Bullets

L'élément contient LinkTitle précédé d'une puce.

ItemStyle.xsl

ImageRight

LinkImage se trouve à droite.

LinkTitle se trouve en haut.

Description se trouve en bas.

ItemStyle.xsl

ImageTop

LinkImage se trouve en haut.

LinkTitle se trouve au centre.

Description se trouve en bas.

ItemStyle.xsl

ImageTopCentered

LinkImage se trouve en haut et centré.

LinkTitle se trouve au centre.

Description se trouve en bas.

ItemStyle.xsl

LargeTitle

LinkImage se trouve à gauche.

LargeLinkTitle se trouve en haut.

Description se trouve en bas.

ItemStyle.xsl

ClickableImage

Contient uniquement LinkImage.

ItemStyle.xsl

NotClickableImage

Contient uniquement Image, sans lien.

ItemStyle.xsl

FixedImageSize

LinkImage avec une contrainte de taille à gauche.

LinkTitle se trouve en haut.

Description se trouve en bas.

ItemStyle.xsl

TitleWithBackground

Contient LinkTitle avec une couleur d'arrière-plan.

Nom du fichier

Modèle

Action du composant WebPart Contenu par requête

Header.xsl

DefaultHeader

Affiche l'en-tête des groupes dans une police de taille moyenne.

Header.xsl

LargeText

Affiche l'en-tête des groupes dans une police de grande taille.

Header.xsl

SmallText

Affiche l'en-tête des groupes dans une police de petite taille.

Header.xsl

Band

Affiche l'en-tête des groupes avec une couleur d'arrière-plan en carré.

Header.xsl

Centered

Centre l'en-tête des groupes.

Header.xsl

Separator

Insère une ligne entre l'en-tête des groupes et le contenu en-dessous.

Header.xsl

Whitespace

Insère un espace entre l'en-tête des groupes et le contenu en dessous.

Chaque modèle contient deux sections d'instructions de traitement :

  • les sections <xsl:variable> traitent les données et assurent la mise en forme appropriée.

  • les sections <div> effectuent le rendu HTML et insèrent les données.

Le code du modèle ImageRight suivant est annoté avec des commentaires :

///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>

Plusieurs fonctions sont disponibles pour être utilisées avec la section <xsl:variables> des fichiers XSL SharePoint Server 2010, tel que décrit dans le tableau suivant.

Fonction

Description

OuterTemplate.GetSafeLink

Lorsque l'utilisateur passe à UrlColumnName (le nom de la colonne contenant la valeur ItemUrl), cette fonction retourne une URL fiable qui peut être affichée pour l'élément.

Si l'URL n'est pas fiable pour l'affichage, la fonction retourne une URL vide.

Si l'élément n'est pas diffusé, la fonction retourne l'URL CopyUtil.

OuterTemplate.GetSafeStaticUrl

Lorsque l'utilisateur passe UrlColumnName (le nom de la colonne dans laquelle l'URL est enregistrée), si l'URL est fiable pour être affichée, la fonction retourne l'URL.

Si l'URL n'est pas fiable pour être affichée, la fonction retourne une URL vide.

OuterTemplate.GetColumnDataForUnescapedOutput

Lorsque l'utilisateur passe Name (le nom de la colonne à partir de laquelle les données doivent être récupérées), cette fonction obtient les données de la colonne pour la sortie sans séquence d'échappement.

Lorsque l'utilisateur passe MustBeOfType (le type de colonne attendu), la fonction retourne le contenu si le type de colonne est correct. Sinon, elle ne retourne aucune donnée.

OuterTemplate.GetTitle

Lorsque l'utilisateur passe Title (les données de la colonne Title), cette fonction retourne un titre.

Si Title est vide, le nom de la page est vide ou title.

OuterTemplate.FormatColumnIntoUrl

Lorsque l'utilisateur passe UrlColumnName (le nom de la colonne qui contient une URL), cette fonction retourne l'URL contenue dans la colonne.

OuterTemplate.FormatValueIntoUrl

Lorsque l'utilisateur passe Value qui représente les données trouvées dans un type de colonne d'URL Windows SharePoint Services 3.0, la colonne d'URL Windows SharePoint Services 3.0 retourne l'URL et le texte de remplacement.

Retourne l'URL contenue dans la colonne.

OuterTemplate.Replace

Si l'utilisateur effectue l'une des opérations suivantes :

  • Transmet Value, et représente la chaîne à remplacer

  • Transmet Search, et représente la chaîne de correspondance

  • Transmet Replace, et représente la chaîne de remplacement de la correspondance

Cette fonction retourne le texte de recherche et de remplacement approprié.

OuterTemplate.GetPageNameFromUrl

Lorsque l'utilisateur passe UrlColumnName (le nom de la colonne de l'URL de l'élément), la fonction retourne le nom de la page dans l'URL.

OuterTemplate.GetPageNameFromUrlRecursive

Méthode Helper pour GetPageNameFromUrl.

OuterTemplate.GetGroupName

Lorsque l'utilisateur passe la valeur de la colonne GroupName, la fonction retourne le nom de groupe au format approprié.

Si la valeur est vide, la fonction retourne un nom de groupe vide.

Lorsque l'utilisateur passe la valeur de la colonne GroupType (le type de colonne du groupe), la fonction retourne le nom de la page si le type est URL.

OuterTemplate.CallPresenceStatusIconTemplate

Si l'attribut @SipAddress existe sur la ligne actuelle, il génère les balises appropriées pour créer une icône de présence pour Microsoft Office Outlook 2007 ou Microsoft Office Communicator 2007.

Pour ajouter un composant WebPart Contenu par requête et personnaliser le fichier XSL du composant WebPart Requête de contenu

  1. Accédez à la page d'accueil de votre site, cliquez sur Actions du site, puis sur Modifier la page pour extraire la page en mode Édition.

  2. Dans une des zones de composants WebPart, cliquez sur Ajouter un composant WebPart, puis sélectionnez et ajoutez un composant WebPart Requête de contenu.

  3. Cliquez sur Modifier, puis sur Modifier le composant WebPart partagé.

  4. Modifiez les propriétés et ajoutez des champs au composant WebPart Requête de contenu le cas échéant. Pour plus d'informations, voir Procédure : Personnaliser le composant WebPart Contenu par requête à l’aide de propriétés personnalisées.

    Notes

    Lorsque vous modifiez le composant WebPart Contenu par requête, il y a deux listes déroulantes dans la section Styles : une pour le style de groupe et une pour le style d’élément. Ces éléments de liste sont définis par des modèles dans les fichiers ItemStyle.xsl et Header.xsl.

  5. Modifiez les valeurs des instructions select, variables et expressions en modifiant le XSL, en utilisant les informations de référence de cette rubrique comme guide. Par exemple, vous pouvez modifier les valeurs des instructions select dans la section <div> pour demander à l'expression de se résoudre en autre variable.

Pour créer un style d'élément

  1. Identifiez un style semblable à celui que vous souhaitez créer.

  2. Copiez le style et modifiez les valeurs de propriété name et match :

    <xsl:template name="ImageRight" match="Row[@Style='ImageRight']" mode="itemstyle">
    <xsl:template name="ImageRight2" match="Row[@Style='ImageRight2']" mode="itemstyle">
    

Voir aussi

Tâches

Procédure : Personnaliser le composant WebPart Contenu par requête à l’aide de propriétés personnalisées

Procédure : personnaliser le format RSS pour le composant WebPart Contenu par requête

Procédure : Afficher des champs personnalisés dans un composant WebPart Contenu par requête