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:
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>
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. -->
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>
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:
Öffnen Sie eine Project XML-Datei in Visual Studio oder in einem anderen Text- oder XML-Editor.
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"?>
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>
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.
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