如何:搭配專案 XML 資料交換檔案使用 XSLT 轉換
可延伸樣式表單語言轉換 (XSLT) 標準會指定 XML 資料轉換的語言定義。 XSLT 可用來將 XML 檔轉換成 XHTML 檔案,或轉換成其他 XML 檔。 本文說明如何使用 XSLT 搭配 Microsoft Office Project 2007 XML 資料交換檔案來篩選和顯示專案資訊。 (本文的內容是由 Microsoft Corporation.) 的一般身分撰寫
注意事項
如需將專案儲存為 Project XML 資料交換檔案的資訊,請參閱 以 XML 格式儲存和開啟專案。
XSLT 樣式表單是 XML 檔,其中包含 XHTML 標籤、XSLT 範本規則和 XPath 語句的組合,可一起運作。
XHTML 標籤會定義 XML 資料呈現所在的顯示環境。
XSLT 範本規則提供以特定方式轉換來源 XML 元素的指示。
XPath 語句可識別 XML 檔內的特定專案。
當 XML 元素符合 XPath 模式時,會叫用相關聯的 XSLT 範本規則。 轉換的資料接著會在 XHTML 標籤所指定的顯示架構中轉譯。
如需 XSLT 範本規則和 XPath 語句的詳細資訊,請參閱本文結尾的連結。
使用 XSLT 轉換顯示專案資訊
程式 1。 若要建立 XSLT 樣式表單:
為您的樣式表單建立 XSLT 檔案。 如果您在 Microsoft Visual Studio 2005 中工作,可以使用 Visual Studio 中 (的 XSLT 檔案 範本,按一下 [ 檔案],指向 [ 新增],然後按一下 [ 檔案]。 此範本會預先填入下列範例所示的 XML 程式碼。 如果您使用其他文字或 XML 編輯器,請複製此範本 XML,然後將它貼到您的 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>
刪除下列 XML 程式碼批註。 這是您撰寫 XSLT 程式碼的位置。
<!-- This is an XSLT template file. Fill in this area with the XSL elements that will transform your XML to XHTML. -->
建立您的 XSLT 程式碼。 此範例中顯示的 XSLT 程式碼會執行下列動作:
在標頭中顯示 Project 專案之 Name 子專案的文字值。
測試每個 Task 元素的 Summary 子項,以查看值是否為 0 (false) 。
測試每個 Task 元素的 Critical 子系,以查看值是否為 1 (true) 。
以粗體顯示非摘要任務的重要工作資料。
顯示非摘要任務之非關鍵性工作的資料。
依每個 Resource 元素之 Name 子系的文字值,依字母順序排序資源資訊。
測試每個 Resource 元素的 Overallocated 子系,以查看值是否為 1 (true) 。
只顯示過度分派資源的已排序資源資料。
<!-- 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>
將檔案儲存為 ProjectTransform.xslt。
建立 XSLT 樣式表單之後,您必須藉由新增處理指示,將 Project XML 檔案連結至該檔案。 程式 2 示範如何將程式 1 中建立的 ProjectTransform.xslt 檔案連結至任何 Project XML 檔案。
程式 2. 若要修改 Project XML 檔案以使用 XSLT 樣式表單:
在 Visual Studio 中,或在另一個文本或 XML 編輯器中開啟 Project XML 檔案。
在 XML 宣告之後插入下列程式程式碼,這是 Project XML 檔案中的第一行。
<?xml-stylesheet type="text/xsl" href="ProjectTransform.xslt"?>
從 Project 元素內刪除 XML 命名空間宣告,這是 Project XML 檔案的根項目。 如果您未刪除內嵌在 Project 元素中的命名空間宣告,XPath 語句將無法比對 Project XML 檔案中的元素。
執行步驟 2 和 3 之後,Project XML 檔案的前三行應該如下列程式碼範例所示。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href=" ProjectTransform.xslt"?> <Project>
儲存 Project XML 檔案。
注意事項
建議您使用與原始 Project XML 檔案名不同的檔案名來儲存檔案,因為步驟 3 中所做的變更會將 Project XML 檔案與 Project XML 資料交換架構解除關聯。
檢視已轉換的專案 XML 檔案。 您可以在 Visual Studio 中執行 XSLT 轉換,方法是將 Project XML 檔案的Stylesheet屬性設定為 ProjectTransform.xslt,然後從XML功能表選取 [顯示 XSLT 輸出]。
您也可以在 Internet Explorer 7、Microsoft Office Word 2007 或任何其他支援 XSLT 的應用程式中開啟 Project XML 檔案。
圖 1 顯示 Word 2007 中 Project XML 檔案的轉換輸出。 當您開啟 Project XML 檔案時,預設只會顯示 [ 資料] 資料檢視。 若要查看已轉換的輸出,您必須在 [XML 檔] 窗格中選取ProjectTransform.xslt資料檢視。
圖 1: Transformed Project XML file