Partager via


Utilisation de XSLT Transformations avec les fichiers d’échange Project Données XML

La norme XSLT (Extensible Stylesheet Language Transformation) spécifie une définition de langage pour les transformations de données XML. XSLT est utilisé pour transformer des documents XML en documents XHTML ou en d’autres documents XML. Cet article explique comment utiliser XSLT avec des fichiers d’échange de données XML Microsoft Office Project 2007 pour filtrer et afficher les informations du projet. (Le contenu de cet article a été fourni par Jessica Britton, Microsoft Corporation.)

Remarque

Pour plus d’informations sur l’enregistrement de projets en tant que fichiers Project XML Data Interchange, consultez Enregistrement et ouverture de projets au format XML.

Une feuille de style XSLT est un document XML qui se compose d’une combinaison de balisage XHTML, de règles de modèle XSLT et d’instructions XPath qui fonctionnent ensemble.

  • Le balisage XHTML définit l’environnement d’affichage dans lequel les données XML sont présentées.

  • Les règles de modèle XSLT fournissent des instructions pour transformer un élément XML source d’une manière particulière.

  • Les instructions XPath identifient des éléments spécifiques dans un document XML.

Lorsqu’un élément XML correspond à un modèle XPath, la règle de modèle XSLT associée est appelée. Les données transformées sont ensuite affichées dans l’infrastructure d’affichage spécifiée par le balisage XHTML.

Pour plus d’informations sur les règles de modèle XSLT et les instructions XPath, consultez les liens à la fin de cet article.

Affichage des informations sur le projet à l’aide de transformations XSLT

Procédure 1. Pour créer une feuille de style XSLT :

  1. Créez un fichier XSLT pour votre feuille de style. Si vous travaillez dans Microsoft Visual Studio 2005, vous pouvez utiliser le modèle fichier XSLT (dans Visual Studio, cliquez sur Fichier, pointez sur Nouveau, puis cliquez sur Fichier. Ce modèle est prérempli avec le code XML indiqué dans l’exemple suivant. Si vous travaillez dans un autre éditeur de texte ou XML, copiez ce modèle XML, puis collez-le dans votre fichier XSLT.

    <?xml version="1.0" encoding="utf-8"?>
    
    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/">
        <html>
        <body>
        <!--
            This is an XSLT template file. Fill in this area with the
            XSL elements which will transform your XML to XHTML.
        -->
        </body>
        </html>
    </xsl:template>
    
    </xsl:stylesheet>
    
  2. Supprimez le commentaire de code XML suivant. C’est là que vous écrivez votre code XSLT.

        <!--
            This is an XSLT template file. Fill in this area with the
            XSL elements that will transform your XML to XHTML.
        -->
    
  3. Créez votre code XSLT. Le code XSLT indiqué dans cet exemple effectue les opérations suivantes :

    • Affiche la valeur de texte de l’enfant Name de l’élément Project dans un en-tête.

    • Teste l’enfant Summary de chaque élément Task pour voir si la valeur est 0 (false).

    • Teste l’enfant Critique de chaque élément Task pour voir si la valeur est 1 (true).

    • Affiche les données des tâches critiques qui ne sont pas des tâches récapitulatives en gras.

    • Affiche des données pour les tâches non critiques qui ne sont pas des tâches récapitulatives.

    • Trie les informations de ressource par ordre alphabétique en fonction de la valeur de texte de l’enfant Name de chaque élément Resource.

    • Teste l’enfant surutilisé de chaque élément Resource pour voir si la valeur est 1 (true).

    • Affiche les données de ressources triées uniquement pour les ressources surutilisées.

    <!-- Define a table to display data in. -->
          <table border="1" cellpadding="3">
            <tr>
              <td colspan="5" align="center">
                <!-- Filter for the project name and display it in a header.  -->
                <h2>
                  <font face="tahoma" size="5">
                    Status for: <xsl:value-of select="Project/Name" />
                  </font>
                </h2>
              </td>
            </tr>
            <!-- Define headers for task information. -->
            <tr>
              <td colspan="5" align="center">
                Tasks:
              </td>
            </tr>
            <tr>
              <th>
                <font color="black">ID</font>
              </th>
              <th>
                <font color="black">Name</font>
              </th>
              <th>
                <font color="black">Priority</font>
              </th>
              <th>
                <font color="black">Start</font>
              </th>
              <th>
                <font color="black">Finish</font>
              </th>
            </tr>
            <!-- Filter for tasks -->
            <xsl:for-each select="Project/Tasks/Task">
              <!-- Exclude summary tasks -->
              <xsl:if test="Summary[.=0]">
                <xsl:choose>
                  <!-- Display information for critical tasks with a colored background. -->
                  <xsl:when test="Critical[.=1]">
                    <tr>
                      <td>
                        <xsl:value-of select="ID"/>
                      </td>
                      <td>
                        <b>
                          <xsl:value-of select="Name"/>
                        </b>
                      </td>
                      <td>
                        <b>
                          <xsl:value-of select="Priority"/>
                        </b>
                      </td>
                      <td>
                        <b>
                          <xsl:value-of select="Start"/>
                        </b>
                      </td>
                      <td>
                        <b>
                          <xsl:value-of select="Finish"/>
                        </b>
                      </td>
                    </tr>
                  </xsl:when>
                  <!-- Display information for noncritical tasks with a white background. -->
                  <xsl:otherwise>
                    <tr>
                      <td>
                        <xsl:value-of select="ID"/>
                      </td>
                      <td>
                        <xsl:value-of select="Name"/>
                      </td>
                      <td>
                        <xsl:value-of select="Priority"/>
                      </td>
                      <td>
                        <xsl:value-of select="Start"/>
                      </td>
                      <td>
                        <xsl:value-of select="Finish"/>
                      </td>
                    </tr>
                  </xsl:otherwise>
                </xsl:choose>
              </xsl:if>
            </xsl:for-each>
            <!-- Define headers for overallocated resource information. -->
            <tr>
              <td colspan="5" align="center">
                Overallocated Resources:
              </td>
            </tr>
            <tr>
              <th>
                <font color="black">ID</font>
              </th>
              <th colspan="2">
                <font color="black">Name</font>
              </th>
              <th colspan="2">
                <font color="black">Overtime Rate</font>
              </th>
            </tr>
            <!-- Filter for resources -->
            <xsl:for-each select="Project/Resources/Resource">
              <!-- Sort resources alphabetically by name -->
              <xsl:sort select="Name" />
              <!-- Display information for only resources that are overallocated. -->
              <xsl:if test="OverAllocated[.=1]">
                <tr>
                  <td>
                    <xsl:value-of select="ID"/>
                  </td>
                  <td  colspan="2">
                    <xsl:value-of select="Name"/>
                  </td>
                  <td  colspan="2" align="center">
                    $<xsl:value-of select="OvertimeRate"/>.00
                  </td>
                </tr>
              </xsl:if>
            </xsl:for-each>
          </table>
    
  4. Enregistrez le fichier sous ProjectTransform.xslt.

Après avoir créé la feuille de style XSLT, vous devez y lier votre fichier XML project en ajoutant des instructions de traitement. La procédure 2 vous montre comment lier le fichier ProjectTransform.xslt créé dans la procédure 1 à n’importe quel fichier PROJECT XML.

Procédure 2. Pour modifier le fichier XML du projet afin d’utiliser la feuille de style XSLT :

  1. Ouvrez un fichier PROJECT XML dans Visual Studio, ou dans un autre éditeur de texte ou XML.

  2. Insérez la ligne de code suivante après la déclaration XML, qui est la première ligne du fichier XML du projet.

    <?xml-stylesheet type="text/xsl" href="ProjectTransform.xslt"?>
    
  3. Supprimez la déclaration d’espace de noms XML de l’élément Project, qui est l’élément racine du fichier XML project. Si vous ne supprimez pas la déclaration d’espace de noms incorporée dans l’élément Project, les instructions XPath ne parviennent pas à faire correspondre les éléments du fichier XML project.

    Après avoir effectué les étapes 2 et 3, les trois premières lignes de votre fichier XML project doivent ressembler à l’exemple de code suivant.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet type="text/xsl" href=" ProjectTransform.xslt"?>
    <Project>
    
  4. Enregistrez le fichier XML du projet.

    Remarque

    Nous vous recommandons d’enregistrer le fichier à l’aide d’un nom de fichier différent du nom de fichier XML du projet d’origine, car les modifications apportées à l’étape 3 dissocient le fichier XML de projet du schéma d’échange de données PROJECT XML.

  5. Affichez le fichier XML de projet transformé. Vous pouvez effectuer la transformation XSLT dans Visual Studio en définissant la propriété Feuille de style du fichier XML project sur ProjectTransform.xslt, puis en sélectionnant Afficher la sortie XSLT dans le menu XML .

    Vous pouvez également ouvrir le fichier XML project dans Internet Explorer 7, Microsoft Office Word 2007 ou toute autre application prenant en charge XSLT.

La figure 1 montre la sortie transformée d’un fichier PROJECT XML dans Word 2007. Lorsque vous ouvrez le fichier XML du projet, la vue données uniquement s’affiche par défaut. Pour afficher la sortie transformée, vous devez sélectionner la vue de données ProjectTransform.xslt dans le volet Document XML .

Figure 1. Fichier XML de projet transformé

Fichier XML de projet transformé

Voir aussi