Freigeben über


Vorgehensweise: Verwenden von XSLT-Transformationen mit XML-Project-Datenaustauschdateien

Der XSLT-Standard (Extensible Stylesheet Language Transformation) gibt eine Sprachdefinition für XML-Datentransformationen an. XSLT wird verwendet, um XML-Dokumente in XHTML-Dokumente oder in andere XML-Dokumente zu transformieren. In diesem Artikel erfahren Sie, wie Sie XSLT mit Microsoft Office Project 2007 XML-Datenaustauschdateien verwenden, um Projektinformationen zu filtern und anzuzeigen. (Der Inhalt dieses Artikels wurde von Jessica Britton, Microsoft Corporation, beigetragen.)

Hinweis

Informationen zum Speichern von Projekten als Project XML Data Interchange-Dateien finden Sie unter Speichern und Öffnen von Projekten im XML-Format.

Ein XSLT-Stylesheet ist ein XML-Dokument, das aus einer Kombination aus XHTML-Markup, XSLT-Vorlagenregeln und XPath-Anweisungen besteht, die zusammenarbeiten.

  • XHTML-Markup definiert die Anzeigeumgebung, in der XML-Daten dargestellt werden.

  • XSLT-Vorlagenregeln enthalten Anweisungen zum Transformieren eines XML-Quellelements auf eine bestimmte Weise.

  • XPath-Anweisungen identifizieren bestimmte Elemente in einem XML-Dokument.

Wenn ein XML-Element mit einem XPath-Muster übereinstimmt, wird die zugeordnete XSLT-Vorlagenregel aufgerufen. Die transformierten Daten werden dann in dem vom XHTML-Markup angegebenen Anzeigeframework gerendert.

Weitere Informationen zu XSLT-Vorlagenregeln und XPath-Anweisungen finden Sie unter den Links am Ende dieses Artikels.

Anzeigen von Projektinformationen mithilfe von XSLT-Transformationen

Vorgehensweise 1: So erstellen Sie ein XSLT-Stylesheet:

  1. Erstellen Sie eine XSLT-Datei für Ihr Stylesheet. Wenn Sie in Microsoft Visual Studio 2005 arbeiten, können Sie die XSLT-Dateivorlage verwenden (klicken Sie in Visual Studio auf Datei, zeigen Sie auf Neu, und klicken Sie dann auf Datei. Diese Vorlage ist mit dem xml-Code im folgenden Beispiel vorab aufgefüllt. Wenn Sie in einem anderen Text- oder XML-Editor arbeiten, kopieren Sie diesen Vorlagen-XML-Code, und fügen Sie ihn dann in Ihre XSLT-Datei ein.

    <?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. Löschen Sie den folgenden XML-Codekommentar. Hier schreiben Sie Ihren XSLT-Code.

        <!--
            This is an XSLT template file. Fill in this area with the
            XSL elements that will transform your XML to XHTML.
        -->
    
  3. Erstellen Sie Ihren XSLT-Code. Der in diesem Beispiel gezeigte XSLT-Code führt Folgendes aus:

    • Zeigt den Textwert des untergeordneten Namens des Project-Elements in einer Kopfzeile an.

    • Testet das untergeordnete Summary-Element jedes Task-Elements, um festzustellen, ob der Wert 0 (false) ist.

    • Testet das untergeordnete Element Critical jedes Task-Elements, um festzustellen, ob der Wert 1 (true) ist.

    • Zeigt Daten für kritische Vorgänge, bei denen es sich nicht um Sammelvorgänge handelt, fett an.

    • Zeigt Daten für nicht kritische Vorgänge an, bei denen es sich nicht um Sammelvorgänge handelt.

    • Sortiert Ressourceninformationen alphabetisch nach dem Textwert des untergeordneten Namens jedes Resource-Elements.

    • Testet das übergeordnete untergeordnete Element jedes Resource-Elements, um festzustellen, ob der Wert 1 (true) ist.

    • Zeigt sortierte Ressourcendaten nur für überlastete Ressourcen an.

    <!-- 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. Speichern Sie die Datei als ProjectTransform.xslt.

Nachdem Sie das XSLT-Stylesheet erstellt haben, müssen Sie ihre Project XML-Datei mit diesem verknüpfen, indem Sie Verarbeitungsanweisungen hinzufügen. In Prozedur 2 wird gezeigt, wie Sie die in Prozedur 1 erstellte Datei ProjectTransform.xslt mit einer beliebigen Project XML-Datei verknüpfen.

Vorgehensweise 2: So ändern Sie die Project XML-Datei so, dass sie das XSLT-Stylesheet verwendet:

  1. Öffnen Sie eine Project XML-Datei in Visual Studio oder in einem anderen Text- oder XML-Editor.

  2. Fügen Sie die folgende Codezeile nach der XML-Deklaration ein, die die erste Zeile in der Project XML-Datei ist.

    <?xml-stylesheet type="text/xsl" href="ProjectTransform.xslt"?>
    
  3. Löschen Sie die XML-Namespacedeklaration innerhalb des Project-Elements, das das Stammelement der Project XML-Datei ist. Wenn Sie die namespace-Deklaration, die in das Project-Element eingebettet ist, nicht löschen, können XPath-Anweisungen nicht mit Elementen in der Project XML-Datei übereinstimmen.

    Nachdem Sie die Schritte 2 und 3 ausgeführt haben, sollten die ersten drei Zeilen ihrer Project XML-Datei wie im folgenden Codebeispiel aussehen.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet type="text/xsl" href=" ProjectTransform.xslt"?>
    <Project>
    
  4. Speichern Sie die Projekt-XML-Datei.

    Hinweis

    Es wird empfohlen, die Datei mit einem Dateinamen zu speichern, der sich vom ursprünglichen Project XML-Dateinamen unterscheidet, da die In Schritt 3 vorgenommenen Änderungen die Zuordnung der Project XML-Datei zum Project XML-Datenaustauschschema aufheben.

  5. Zeigen Sie die transformierte Projekt-XML-Datei an. Sie können die XSLT-Transformation in Visual Studio ausführen, indem Sie die Stylesheet-Eigenschaft der Project XML-Datei auf ProjectTransform.xslt festlegen und dann im Menü XML die Option XSLT-Ausgabe anzeigen auswählen.

    Sie können die Project XML-Datei auch in Internet Explorer 7, Microsoft Office Word 2007 oder jeder anderen Anwendung öffnen, die XSLT unterstützt.

Abbildung 1 zeigt die transformierte Ausgabe einer Project XML-Datei in Word 2007. Wenn Sie die Project XML-Datei öffnen, wird standardmäßig die Datenansicht Nur Daten angezeigt. Um die transformierte Ausgabe anzuzeigen, müssen Sie im Bereich XML-Dokument die Datenansicht ProjectTransform.xslt auswählen.

Abbildung 1: Transformierte Project-XML-Datei

Transformierte Project-XML-Datei

Siehe auch