註解:

Dreamweaver CC (含) 以後版本的用戶介面已經簡化了。因此,您在 Dreamweaver CC 和更新版本中可能會找不到本文所描述的一些選項。如需詳細資訊,請參閱本文

使用 XML 與 XSL 搭配網頁

「可擴展標記語言」(XML) 是一種可以讓您建立資訊結構的語言。就像 HTML 一樣,XML 可讓您使用標籤來建立資訊結構,但 XML 標籤並非和 HTML 標籤一樣是預先定義好的; 不同的是,XML 可讓您建立最適合用來定義您的資料結構 (綱要) 的標籤。標籤會以巢狀的方式層層包覆,以建立父標籤和子標籤的綱要。如同大部分的 HTML 標籤,XML 綱要中的所有標籤都有開頭和結尾標籤。

下面範例顯示了 XML 檔案的基本結構:

<?xml version=“1.0”> 
<mybooks> 
    <book bookid=“1”> 
        <pubdate>03/01/2004</pubdate> 
        <title>Displaying XML Data with Adobe Dreamweaver</title> 
        <author>Charles Brown</author> 
    </book> 
    <book bookid=“2”> 
        <pubdate>04/08/2004</pubdate> 
        <title>Understanding XML</title> 
        <author>John Thompson</author> 
    </book> 
</mybooks>

在此範例中,每個父系 <book> 標籤包含三個子標籤:<pubdate><title><author>。然而每一個 <book> 標籤同時也是 <mybooks> 標籤的子標籤,後者在綱要中高了一個層級。您可以使用任何方式來命名及建立 XML 標籤的結構,前提是要以巢狀方式來建立標籤結構,並替開頭的標籤指定一個相對應的結尾標籤。

XML 文件不包含任何格式設定 它們只是結構化資訊的容器。只要您有 XML 綱要,就可以使用「可擴展樣式表語言」(XSL) 來顯示這項資訊。如同「串接樣式表」(CSS) 可讓您格式化 HTML 的方式一般,XSL 可讓您格式化 XML 資料。您可以定義 XSL 檔案中的樣式、頁面元素與版面等,並且將它附加到 XML 檔案,以便當使用者在瀏覽器中檢視 XML 資料時,該資料可以根據您在 XSL 檔案中的定義進行格式化。將內容 (XML 資料) 和呈現方式 (由 XSL 檔案定義) 完全分開,讓您可以有效控制資訊在網頁上的顯示方式。基本上,XSL 是 XML 的呈現技術,而其主要輸出是 HTML 網頁。

「可擴展樣式表語言轉換」(XSLT) 是 XSL 的一套子語言,讓您在網頁上顯示 XML 資料,並讓 XML 資料 (和 XSL 樣式一起)「轉換」成可讀、樣式化且為 HTML 格式的資訊。您可以使用 Dreamweaver 建立 XSLT 頁面,以便使用應用程式伺服器或瀏覽器來執行 XSL 轉換。在伺服器端執行 XSL 轉換時,伺服器會負責將 XML 和 XSL 轉換,並顯示在頁面上。在用戶端執行轉換時,瀏覽器 (例如 Internet Explorer) 就會負責這項工作。

您最後採取的方法 (伺服器端轉換或用戶端轉換) 要視您嘗試要達到的最終結果、您可用的技術、您的 XML 原始檔的存取權層級以及其他因素而定。這兩種方式都有其優點與限制。例如,伺服器端轉換適用於所有伺服器,而用戶端轉換則僅限於最新的瀏覽器 (Internet Explorer 6、Netscape 8、Mozilla 1.8 和 Firefox 1.0.2)。伺服器端轉換可以讓您從自己的伺服器或網路上的任何一處動態顯示 XML 資料,但是用戶端轉換必須使用掛載在本機網頁伺服器上的 XML 資料。此外,伺服器端轉換要求您將網頁部署至已設定完成的應用程式伺服器,而用戶端轉換則只要求對網頁伺服器的存取權。

如需有關了解 XML 的教學課程,請參閱 www.adobe.com/go/vid0165_tw

伺服器端 XSL 轉換

Dreamweaver 提供了建立 XSLT 頁面,以讓您執行伺服器端 XSL 轉換的方法。當應用程式伺服器執行 XSL 轉換時,包含 XML 資料的檔案可以存在於您自己的伺服器上,或網路上的其他地方。此外,任何瀏覽器都可以顯示轉換的資料。然而,部署伺服器端轉換的頁面有些複雜,需要您先存取至應用程式伺服器。

當使用伺服器端 XSL 轉換時,您可以用 Dreamweaver 來建立 XSLT 頁面以產生完整的 HTML 文件 (完整的 XSLT 頁面),或產生部分 HTML 文件的 XSLT 片段。完整的 XSLT 頁面類似於一般的 HTML 頁面。它包含一個 <body> 標籤一個和 <head> 標籤,並讓您將 HTML 和 XML 資料組合顯示在頁面上。XSLT 片段是獨立文件使用的程式碼,可以顯示格式化的 XML 資料。和完整的 XSLT 頁面不同的是,它是一個獨立的檔案,不包含 <body><head> 標籤。如果您想要顯示專屬頁面上的 XML 資料,就要建立一個完整的 XSLT 頁面,然後將您的 XML 資料繫結到該頁面。另一方面,如果想要將 XML 資料顯示在現有動態頁面上的某一特定區段 (例如,運動用品商店的動態網頁,頁面的另一端顯示了來自 RSS 反饋檔案的比賽分數),您必須建立一個 XSLT 片段,並將參考插入至動態頁面中。較普遍的情況是,建立 XSLT 片段,然後使用它們來結合其他動態網頁以顯示 XML 資料。

建立這些類型頁面的第一步,就是建立 XSLT 片段: 它是一個獨立的檔案,包含版面、格式,以及您最後想要顯示在動態網頁上的 XML 資料。建立 XSLT 片段後,就可以將參考插入動態網頁中的 XSLT 片段 (例如,PHP 或 ColdFusion 網頁)。插入的指向 XSLT 片段的參照其運作方式很類似於伺服器端包含 (SSI) - 已格式化的 XML 資料 (片段) 會位於另一個檔案中,當您在「設計」檢視中時,動態網頁上就會顯示片段的預留位置。當瀏覽器要求內含片段參照的動態網頁時,伺服器就會處理內含的指示並建立一份新的文件,在這份文件中所顯示的已不再是預留位置,而是片段的已格式化內容。

伺服器端 XSL 轉換
A. 瀏覽器要求動態網頁 B. 網頁伺服器找到網頁,並將它傳送給應用程式伺服器 C. 應用程式伺服器掃描網頁上的指示並取得 XSLT 片段 D. 應用程式伺服器執行轉換 (讀取 XSLT 片段、取得 XML 資料並將其格式化) E. 應用程式伺服器將轉換後的片段插入網頁,並將網頁傳送回網頁伺服器 F. 網頁伺服器將完成的網頁傳送給瀏覽器 

您可以使用 XSL 轉換伺服器行為將動態網頁的參考資料插入 XSLT 片段。插入參考時,Dreamweaver 會在含有執行階段圖庫檔案的網站根資料夾中,產生一個 includes/MM_XSLTransform/ 資料夾。當指定的 XML 資料進行轉換時,應用程式伺服器會使用此檔案內所定義的函數。該檔案負責擷取 XML 資料和 XSLT 片段,執行 XSL 轉換和將結果輸出於網頁。

包含 XSLT 片段的檔案、包含資料的 XML 檔案,以及所產生的執行階段圖庫檔案都必須位於伺服器上,頁面才能正確顯示 (如果您選取了遠端 XML 檔案做為資料來源,例如,一個來自 RSS 反饋的檔案,這個檔案當然也必須位於網際網路上的某個位置)。

您還可以使用 Dreamweaver 建立完整的 XSLT 頁面,以與伺服器端轉換搭配使用。完整的 XSLT 頁面作用和 XSLT 片段一樣,只有當您使用 XSL 轉換伺服器行為將參考插入完整的 XSLT 頁面時,才能插入 HTML 頁面的完整內容。因此,在您插入參考前,必須先清除動態網頁 (做為容器頁面的 .cfm、.php 或 .asp 頁面) 中的所有 HTML。

Dreamweaver 支援 ColdFusion、ASP 和 PHP 頁面的 XSL 轉換。

註解:

您的伺服器必須正確設定才能執行伺服器端轉換。如需詳細資訊,請聯絡您的伺服器管理員。

用戶端 XSL 轉換

您可以在用戶端執行 XSL 轉換,而不使用應用程式伺服器。您只需使用 Dreamweaver 建立完整的 XSLT 頁面就能達成這個目的,不過,用戶端轉換會要求您操作 XML 檔案 (其中包含想要顯示的資料)。此外,用戶端轉換只適用於最新的瀏覽器 (Internet Explorer 6、Netscape 8、Mozilla 1.8 和 Firefox 1.0.2)。如需有關瀏覽器是否支援 XSL 轉換的詳細資訊,請參閱 www.w3schools.com/xsl/xsl_intro.asp

首先,建立一個完整的 XSLT 頁面,然後附加一個 XML 資料來源 (Dreamweaver 在您建立該新頁面時,會提示您附加資料來源)。您可以從頭開始建立一個 XSLT 頁面,或將現有的 HTML 頁面轉成 XSLT 頁面。當您將現有的 HTML 頁面轉成 XSLT 頁面時,必須使用「繫結」面板來附加 XML 資料來源 (「視窗>繫結」)。

一旦建立 XSLT 頁面後,必須在 XML 檔案中插入指向 XSLT 頁面的參考,藉此將頁面連結到包含 XML 資料的 XML 檔案 (很像您在 HTML 頁面的 <head> 區段中插入指向外部 CSS 樣式表的參考)。您的網頁瀏覽者必須在瀏覽器中檢視 XML 檔案 (而非 XSLT 頁面)。當您的網頁瀏覽者檢視該頁面時,瀏覽器會執行 XSL 轉換並顯示由連結的 XSLT 頁面進行格式化的 XML 資料。

連結的 XSLT 與 XML 頁面之間的關係在概念上很相似,但卻和外部 CSS/HTML 頁面模型不同。當您已有含有內容 (例如文字) 的 HTML 頁面時,便要使用外部樣式表將該內容格式化。HTML 頁面會決定內容,而使用者一律看不見的外部 CSS 程式碼會決定呈現方式。如果使用 XSLT 和 XML,情況就會相反。XML 檔案 (使用者一律看不見其原始形式) 會決定內容,而 XSLT 頁面將決定呈現方式。XSLT 頁面包含標準的 HTML 頁面通常都會包含的表格、版面、圖像等。當使用者在瀏覽器中檢視 XML 檔案時,XSLT 頁面會將該內容格式化。

用戶端 XSL 轉換
A. 瀏覽器要求 XML 檔 B. 伺服器將 XML 檔傳送給瀏覽器以做為回應 C. 瀏覽器讀取 XML 指示詞並呼叫 XSLT 檔 D. 伺服器傳送 XSLT 檔給瀏覽器 E. 瀏覽器將 XML 資料轉換後顯示在瀏覽器中 

當您使用 Dreamweaver 來連結 XSLT 頁面至 XML 頁面時,Dreamweaver 會在 XML 頁面上方為您插入適當的程式碼。如果您擁有所連結的 XML 頁面 (也就是說,如果 XML 檔案就位在您的網路伺服器上),那麼您只需要使用 Dreamweaver 來插入連結兩個頁面的適當程式碼。當您擁有 XML 檔案時,用戶端便能完全動態執行 XSL 轉換。也就是說,只要您更新 XML 檔案中的資料時,任何使用連結的 XSLT 頁面的 HTML 輸出都會自動隨新資訊更新。

註解:

您用來進行用戶端轉換的 XML 和 XSL 檔案,必須位於相同的目錄下。如果不是,瀏覽器將會讀取 XML 檔案,並尋找轉換的 XSLT 頁面,但卻無法找到在 XSLT 頁面中相對連結所定義的資源 (樣式表、影像等)。

如果您未擁有所連結的 XML 頁面 (舉例來說,如果您想要使用來自網路以外某處的 RSS 反饋的 XML 資料),那麼流程就有點複雜了。若要使用來自外部來源之 XML 資料以執行用戶端轉換,您必須先將 XML 來源檔案下載至 XSLT 頁面的相同目錄中。如果 XML 頁面位在您的本機網站中,您就可以使用 Dreamweaver 來加入連結 XML 頁面至 XSLT 頁面的適當程式碼,然後將兩個頁面 (下載的 XML 檔案和連結的 XSLT 頁面) 公佈到您的網路伺服器。當使用者在瀏覽器中檢視 XML 頁面時,XSLT 頁面會將該內容格式化,如同先前的範例。

在來自外部來源的 XML 資料上執行用戶端 XSL 轉換的缺點就是,XML 資料只有部分是「動態的」。您所下載和更改的 XML 檔案只是存在於網路上其他地方的檔案「快照」。如果網路外的原始 XML 檔案變更了,您就必須再次下載該檔案,將它連結到 XSLT 頁面,重新公佈 XML 檔案到您的網路伺服器。瀏覽器只會呈現從您的網路伺服器上的 XML 檔案接收的資料,而非包含在原始 XML 來源檔案中的資料。

XML 資料和重複元素

「重複區域」XSLT 物件可以讓您在頁面內顯示來自 XML 檔案的重複元素。任何包含 XML 資料預留位置的區域都可以變成重複區域。然而,最常見的區域為表格、表格列,或是一系列的表格列。

下面範例說明「重複區域」XSLT 物件是如何套用到表格列,以顯示某家餐廳的菜單資訊。起始列會顯示 XML 綱要的三種不同要素:項目、描述和價格。當「重複區域」XSLT 物件套用到表格列,且應用程式伺服器或瀏覽器處理了頁面之後,表格就會重複顯示,每一個新表格列中都插入唯一的資料。

套用重複區域 XSLT 物件

當您套用「重複區域」XSLT 物件至「文件」視窗中的元素時,重複區域的四周會出現細細的灰色外框。當您在瀏覽器中預覽您的成果時 (「檔案>在瀏覽器中預覽」),灰色的外框會消失不見,取而代之的是在展開的選取區域中,顯示您在 XML 檔案中 (如先前的描述) 指定的重複區域。

當您將「重複區域」XSLT 物件加入到頁面時,「文件」視窗中 XML 資料預留位置的長度便會截斷。這是因為 Dreamweaver 會更新 XML 資料預留位置的 XPath (XML 路徑語言) 運算式,以便使它能相對於重複元素的路徑。

舉例來說,下面的程式碼適用於包含兩個動態預留位置的表格,不需套用「重複區域」XSLT 物件至該表格:

<table width="500" border="1"> 
    <tr> 
        <td><xsl:value-of select="rss/channel/item/title"/></td> 
    </tr> 
    <tr> 
        <td><xsl:value-of select="rss/channel/item/description"/></td> 
    </tr> 
</table>

下列程式碼適用於套用「重複區域」XSLT 物件的相同表格:

<xsl:for-each select="rss/channel/item"> 
    <table width="500" border="1"> 
        <tr> 
            <td><xsl:value-of select="title"/></td> 
        </tr> 
        <tr> 
            <td><xsl:value-of select="description"/></td> 
        </tr> 
    </table> 
</xsl:for-each>

在先前的範例中,Dreamweaver 已更新落於「重複區域」(標題 & 描述) 內項目的 XPath,與成對的 <xsl:for-each> 標籤內的 Xpath 相對,而不是完整的文件。

Dreamweaver 在其他情況下也會產生相對於內容的 XPath 運算式。舉例來說,如果您將 XML 資料預留位置拖曳至已套用「重複區域」XSLT 物件的表格中,Dreamweaver 會自動顯示 XPath,與成對的 <xsl:for-each> 標籤內現有的 Xpath 相對。

預覽 XML 資料

當您使用「在瀏覽器中預覽」(「檔案>在瀏覽器中預覽」) 來預覽已插入 XSLT 片段或完整 XSLT 頁面的 XML 資料時,執行 XSL 轉換的引擎便會因情況而有所不同。對於含有 XSLT 片段的動態網頁而言,一律是由應用程式伺服器來執行轉換。在其他時候,可能是由 Dreamweaver 或瀏覽器來執行轉換。

下面的表格概述使用「在瀏覽器中預覽」時的情況,以及執行轉換的引擎:

在瀏覽器中預覽的頁面類型 執行資料轉換的引擎
包含 XSLT 片段的動態網頁 應用程式伺服器
XSLT 片段或完整的 XSLT 頁面 Dreamweaver
含連結的 XML 檔案插入到完整的 XSLT 頁面 瀏覽器

下面主題所提供的指導方針,能幫助您根據需要決定合適的預覽方法:

預覽伺服器端轉換的頁面

在伺服器端轉換的情況下,網頁瀏覽者最後看見的內容是由您的應用程式伺服器所執行轉換而成的。建立與伺服器端轉換搭配使用的 XSLT 和動態網頁時,建議您隨時預覽包含 XSLT 片段的動態網頁,而不是 XSLT 片段本身。在前面的情況中,您可以使用應用程式伺服器,確認您所預覽的內容會和您的網頁瀏覽者在瀏覽網頁時所看見的一樣。在後者的情況下,Dreamweaver 會執行轉換,並提供一些不太一致的內容。建立 XSLT 片段時,您可以使用 Dreamweaver 進行預覽,但如果您在插入 XSLT 片段後使用應用程式伺服器來預覽動態網頁,便能看到最準確的資料呈現結果。

預覽用戶端轉換的頁面

在用戶端轉換的情況下,網頁瀏覽者最後看見的內容是由您的瀏覽器所執行轉換而成的。您可以從 XML 檔案新增連結至 XSLT 頁面來完成此程序。如果您在 Dreamweaver 開啟 XML 檔案,並且在瀏覽器中預覽該檔案,瀏覽器會被迫載入 XML 檔案並執行轉換。如此一來,您預覽的內容和網頁瀏覽者看見的一樣了。

但是,使用這種方法會讓您難以進行網頁除錯,因為瀏覽器會進行 XML 轉換並且在內部產生 HTML。如果您選取瀏覽器的「檢視原始檔」選項來進行所產生之 HTML 的除錯,就只能看見瀏覽器接收的原始 XML,而非負責呈現頁面的完整 HTML (標籤、樣式等)。若要在檢視原始程式碼時看見完整的 HTML,您必須改在瀏覽器中預覽 XSLT 頁面。

預覽完整的 XSLT 頁面和 XSLT 片段

建立完整的 XSLT 頁面和 XSLT 片段時,您會想要預覽您的成果,以便確認資料顯示正確。如果您使用「在瀏覽器中預覽」來顯示完整的 XSLT 頁面或 XSLT 片段,Dreamweaver 便會使用內建轉換引擎來執行轉換。此方法可快速得到結果,讓您更輕鬆快速地進行網頁的建立和除錯。在瀏覽器中選取「檢視來源檔」還能讓您檢視完整的 HTML (標籤、樣式等)。

註解:

不論您要使用用戶端或伺服器端來進行資料轉換,開始建立 XSLT 頁面時最適合使用這種方法。

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策