了解如何在 Dreamweaver 中執行伺服器端 XSL 轉換。 建立 XSLT 頁面,以及將 HTML 轉換成 XSLT 頁面。
Dreamweaver 和更高版本的用戶介面已經簡化。 因此,您在 Dreamweaver 和更高版本中可能會找不到本文所描述的一些選項。 如需詳細資訊,請參閱本文。
執行伺服器端 XSL 轉換的工作流程
您可以在伺服器上執行伺服器端 XSL 轉換。在建置顯示 XML 資料的頁面之前,請先了解伺服器端和用戶端 XSL 轉換 以及搭配網頁使用 XML 和 XSL 的相關資訊。
您的伺服器必須正確設定才能執行伺服器端轉換。 如需詳細資訊,請聯絡您的伺服器管理員。
執行伺服器端 XSL 轉換的一般工作流程如下(每個步驟都在其他主題中說明):
1.設定 Dreamweaver 網站。
2.選擇伺服器技術並設定應用程式伺服器。
3.測試應用程式伺服器。
例如 建立需要處理的頁面,並確認 應用程式伺服器會處理該頁面。
4.建立 XSLT 片段或頁面,或將 HTML 頁面轉換為 XSLT 頁面。
在您的 Dreamweaver 網站中,建立 XSLT 片段或完整的 XSLT 頁面。
將現有的 HTML 頁面轉成完整的 XSLT 頁面。
5.將 XML 資料來源附加到頁面。
6.透過將資料繫結到 XSLT 片段或完整的 XSLT 頁面來顯示 XML 資料。
7.如有需要,將「重複區域 XSLT」物件新增到包含 XML 資料預留位置的表格或表格列。
8.插入參照。
若要在動態 頁面中插入 XSLT 片段的參照,請使用「XSL 轉換」伺服器行為。
若要在動態頁面中插入完整 XSLT 頁面的參照,請刪除動態頁面中的所有 HTML 代碼,然後使用「XSL 轉換」伺服器行為。
9.發佈頁面和片段。
同時將 動態頁面和 XSLT 片段 (或完整的 XSLT 頁面) 發佈到您的應用程式伺服器。如果您使用的是本機 XML 檔案, 也需要將該檔案一併發佈。
10.在瀏覽器中檢視動態頁面。
執行此作業時,應用程式伺服器會轉換 XML 資料、將其插入動態頁面,並在 瀏覽器中顯示。
建立 XSLT 頁面
您可以建立 XSLT 頁面,以便在網頁上顯示 XML 資料。您可以建立完整的 XSLT 頁面 (包含 <body> 標記和 <head> 標記的 XSLT 頁面),或者您可以建立 XSLT 片段。建立 XSLT 片段時,您會建立一個獨立的檔案,其中不包含正文或標題標記,只是一段簡單的代碼,稍後會插入動態頁面中。
如果您要從現有的 XSLT 頁面開始著手,就必須將 XML 資料來源附加至此頁面。
選取 XSLT (整頁) 以建立 完整的 XSLT 頁面。
選取 XSLT (片段) 以建立 XSLT 片段。
- 選取「在我的電腦或區域網路上附加本機檔案」,按一下「瀏覽」按鈕,瀏覽至位於電腦上的本機 XML 檔案,然後按一下「確定」。
- 選取「在 Internet 上附加遠端檔案」,輸入位於網際網路上的 XML 檔案的 URL (例如來自 RSS 反饋的檔案),然後按一下「確定」。
按下「取消」按鈕將產生一個沒有附加 XML 資料來源的新的 XSLT 頁面。
「繫結」面板會填入 XML 資料來源的綱要
下面的表格說明了綱要內可能會出現的各種元素:
Element |
代表 |
詳細資料 |
|---|---|---|
<> |
必要的非重複 XML 元素 |
只在其父節點內出現一次的元素 |
<>+ |
重複的 XML 元素 |
在其父節點內出現一或多次的元素 |
<>+ |
選擇性的 XML 元素 |
在其父節點內出現零或多次的元素 |
粗體的元素節點 |
目前的內容元素 |
插入點位在重複區域內的一般重複元素 |
@ |
XML 屬性 |
|
將 HTML 頁面轉換成 XSLT 頁面
您也可以將 現有的 HTML 頁面轉換為 XSLT 頁面。例如,如果您有一個預先設計的 靜態頁面,並想要加入 XML 資料,您可以將該 頁面轉換為 XSLT 頁面,而不必建立 XSLT 頁面並從頭 重新設計頁面。
「文件」視窗中會開啟該頁面的複本。 新 頁面為 XSL 樣式表,並以 .xsl 副檔名儲存。
附加 XML 資料來源
如果您是從現有的 XSLT 頁面開始,或是在使用 Dreamweaver 建立 新 XSLT 頁面時未附加 XML 資料來源,則必須 使用「繫結」面板附加 XML 資料來源。
您也可以按一下「繫結」面板右上角的「來源」連結,以新增 XML 資料來源。
選取「附加本機檔案」,按一下「瀏覽」 按鈕,瀏覽至電腦上的本機 XML 檔案,然後按一下「確定」。
選取「附加遠端檔案」,並輸入 Internet 上 XML 檔案的 URL (例如來自 RSS 動態消息的檔案)。
「繫結」面板會填入您 XML 資料來源的綱要。
顯示 XSLT 頁面中的 XML 資料
建立 XSLT 頁面並附加 XML 資料來源之後,您就可以將資料繫結到頁面。為了做到這點,您可以將 XML 資料預留位置新增到頁面中,然後使用 XPath 運算式產生器或屬性檢測器來格式化選取的資料,該資料將顯示在頁面上。
在大多數情況下,您可以使用「重複區域 XSLT」物件在頁面上顯示重複的 XML 元素。在此情況下,您可能想要建立具有一個或多個欄的單列表格,或者如果您想要包含表格標頭,則建立雙列表格。
XML 資料預留位置會出現在頁面上。預留位置會反白顯示並以大括號括起來。它使用 XPath (XML 路徑語言) 語法來描述 XML 方案的階層結構。例如,如果您將下層元素 title 拖曳到頁面,而該元素具有上層元素 rss、channel 和 item,那麼動態內容預留位置的語法將會是 {rss/channel/item/title}。
按兩下頁面上的 XML 資料預留位置以開啟 XPath 運算式產生器。XPath 運算式產生器可讓您格式化選取的資料,或從 XML 方案中選取其他項目。
當您使用「在瀏覽器中預覽」來預覽您的成果時,Dreamweaver 不會在使用應用程式伺服器的情況下執行內部 XSL 轉換。
顯示重複的 XML 元素
重複區域 XSLT 物件讓您在網頁中顯示 XML 資料來源的重複元素。例如,如果您要顯示動態消息中的文章標題和描述, 而該動態消息包含 10 到 20 篇 文章,XML 檔案中的每個標題和描述可能 都是重複元素的子元素。
設計 檢視中任何包含 XML 資料預留位置的區域都可以變更為重複 區域。但是,最常見的區域是表格、表格列或 一系列表格列。
選取可以是任何內容,包括表格、表格 列,甚至是一段文字。
若要精確地選取頁面上的某個區域,可以使用「文件」視窗左下角的標籤選取器。 例如,如果這個區域是一個表格,請在頁面上的表格內按一下,然後按一下標籤選取器中的標籤。
選取「插入」>「XSLT 物件」>「重複區域」。
在插入面板的 XSLT 類別中,按一下 重複區域按鈕。
在文件視窗中,重複區域周圍會出現 細微、有標籤的灰色外框。當您在瀏覽器中預覽您的工作時 (檔案 > 在瀏覽器中預覽),灰色外框會消失, 選取會展開以顯示 XML 檔案中指定的重複元素。
當您將重複區域 XSLT 物件新增到頁面時,文件視窗中的 XML 資料預留位置會被截斷。這是因為 Dreamweaver 截斷了 XML 資料預留位置的 XPath,使其相對於 重複元素的路徑。
設定重複區域 (XSL) 屬性
在屬性檢查器中,您可以選取 不同的 XML 節點來建立重複區域。
編輯重複區域 XSLT 物件
在您將重複區域 XSLT 物件新增到區域後,您可以使用屬性檢查器編輯它。
在動態 頁面中插入 XSLT 片段
在您建立 XSLT 片段後,您可以使用 XSL 轉換伺服器行為將其插入到動態網頁中。當您將伺服器 行為新增到您的頁面並在瀏覽器中檢視頁面時,應用程式 伺服器會執行轉換,顯示來自 選定 XSLT 片段的 XML 資料。Dreamweaver 支援 ColdFusion、ASP 或 PHP 頁面的 XSL 轉換。
如果您想要在動態網頁中插入整個 XSLT 頁面的內容,程序也是完全一樣的。 在使用「XSL 轉換」伺服器行為將插入完整的 XSLT 頁面前,請先刪除該動態網頁的所有 HTML 程式碼。
插入 XSLT 片段時,在頁面上放置插入點之後,應該一律要按一下「顯示程式碼和設計檢視」按鈕,這樣就可以確認插入點是位於正確的位置。 如果插入點沒有位於正確的位置,您可能需要按一下「程式碼」檢視中的某個地方,以便將插入點放在您要的位置。
Dreamweaver 會在下一個文字 欄位中填入附加到指定片段的 XML 檔案的檔案路徑或 URL。若要變更它,請按一下「瀏覽」按鈕 並瀏覽至其他檔案。
網站根資料夾中也會建立一個 includes/MM_XSLTransform/ 資料夾,其中包含執行階段程式庫檔案。應用程式 伺服器會使用此檔案中定義的功能來執行 轉換。
從動態 頁面刪除 XSLT 片段
您可以刪除 用於插入片段的 XSL 轉換 伺服器行為,從頁面移除 XSLT 片段。刪除伺服器行為只會刪除 XSLT 片段,不會刪除相關聯的 XML、XSLT 或執行階段程式庫檔案。
您應該一律採取這種方式來移除伺服器行為。 手動刪除產生的程式碼只能刪除部分的伺服器行為,即使該伺服器行為已經從「伺服器行為」面板中消失,卻還是沒有完全刪除。
編輯 XSL 轉換伺服器 行為
將 XSLT 片段新增至動態網頁後,您可以隨時編輯 XSL 轉換伺服器行為。
建立動態連結
您可以在 XSLT 頁面上建立動態連結,當使用者按一下 XML 資料中的指定字詞或字詞群組時,該連結會連至特定的 URL。如需完整說明,請參閱 www.adobe.com/go/dw_documentation 上的 Dreamweaver 勘誤表。
將樣式套用至 XSLT 片段
當您建立整個 XSLT 頁面 (即包含 <body> 和 <head> 標記的 XSLT 頁面) 時,您可以在頁面上顯示 XML 資料,然後使用屬性檢視窗或 CSS 樣式面板格式化資料,就像格式化任何其他內容一樣。但是,當您建立 XSLT 片段以插入 動態頁面時 (例如,用於插入 ASP、PHP 或 Cold Fusion 頁面的片段),片段和動態頁面中樣式的轉譯會變得更加複雜。儘管 您會與動態頁面分開處理 XSLT 片段,但請務必記住,該片段是要在 動態頁面內使用,而且來自 XSLT 片段的輸出最終位於 動態頁面的 <body> 標記內的某處。根據這個工作流程,請務必確定您 不要在 XSLT 片段中包含 <head> 元素(例如樣式 定義或外部樣式表的連結)。這樣做 會導致應用程式伺服器將這些元素放置到 動態頁面的 <body> 中,因此產生 無效的標記。
例如,您可能想要建立一個 XSLT 片段以插入 動態頁面中,並使用與動態頁面相同的外部 樣式表來格式化片段。如果您將相同的樣式表 附加到片段,產生的 HTML 頁面會包含樣式表的重複連結 (一個在動態頁面的 <head> 區段中, 另一個在頁面的 <body> 區段中,也就是 XSLT 片段內容出現的地方)。您應該使用設計時期樣式表來參照外部樣式表,而不是使用這種方法。
格式化 XSLT 片段的內容時,請使用下列 工作流程:
首先,將外部樣式表附加至動態網頁 (您可以使用這個最佳實作,將樣式套用至任何網頁的內容)。
接下來,以設計階段樣式表的方式,將相同的外部樣式表附加至 XSLT 片段。 如同名稱的含意,設計階段樣式表只能用於 Dreamweaver「設計」檢視中。
完成先前的兩個步驟之後,您可以使用附加至動態網頁的相同樣式表,在 XSLT 片段中建立新的樣式。 得出的 HTML 頁面會較乾淨 (因為該樣式表的參考只會在使用 Dreamweaver 時才有效),而該片段仍會在「設計」檢視中顯示適當的樣式。 此外,當您在「設計」檢視中檢視動態網頁,或在瀏覽器中預覽動態網頁時,所有的樣式都會套用至該片段和動態網頁中。
如果您在瀏覽器中預覽 XSLT 片段,瀏覽器並不會顯示樣式, 您應該要在瀏覽器中預覽動態網頁,以查看動態網頁內容中的 XSLT 片段。
使用參數進行 XSL 轉換
當您將 XSL 轉換伺服器行為 加入到網頁時,可以為 XSL 轉換定義參數。參數可控制 XML 資料的處理和 顯示方式。例如,您可能會使用參數來識別和 列出動態消息中的特定文章。當頁面在 瀏覽器中載入時,只會出現您使用參數指定的文章。
將 XSLT 參數加入到 XSL 轉換
如果您要使用靜態值,請在「值」方塊中輸入 該值。
如果您要使用動態值,請按一下「值」方塊旁邊的動態 圖示,完成「動態資料」對話框, 然後按一下「確定」。如需詳細資訊,請按一下「動態資料」對話框中的「說明」按鈕。
編輯 XSLT 參數
刪除 XSLT 參數
建立和編輯條件式 XSLT 區域
您 可以在 XSLT 頁面上建立簡單條件式區域或多重條件式區域。您可以在「設計」檢視中選取元素 並將條件式區域套用到選取項目,或者可以在文件中的插入點 處插入條件式區域。
例如,如果您要在項目無法使用時在項目價格旁邊顯示「無法使用」這個字,您可以在頁面上輸入「無法使用」文字,選取它,然後將條件式區域套用到選取的文字。Dreamweaver 會以 <xsl:if> 標記包圍 選取的內容,只有在資料符合 條件運算式的條件時,才會在頁面上顯示 「無法使用」一詞。
套用條件 XSLT 區域
您可以編寫簡單的條件運算式 插入到 XSLT 頁面中。如果在開啟 條件區域對話框時選取了內容,該內容將會包裝在 <xsl:if> 區塊中。如果未選取 內容,<xsl:if> 區塊會新增到 頁面上的插入點。建議您使用對話框 開始使用,然後在程式碼檢視中自訂運算式。
<xsl:if> 元素 類似於其他語言中的 if 陳述式。 該元素提供了一種測試條件並根據 結果採取行動過程的方法。<xsl:if> 元素 可讓您測試運算式的單一真或假值。
在以下範例中,您想要測試內容節點的 @available 屬性值是否為 真。
您的 XSLT 頁面會插入下面的程式碼:
<xsl:if test="@available='true'">
內容位於此處
</xsl:if>
您需要將字串值 (例如 true) 圍上引號。 Dreamweaver 會為您編碼引號 ('),以便將其輸入為有效的 XHTML。
除了測試節點的值之外,您還可以在條件陳述式中使用任何支援的 XSLT 函數。測試您 XML 檔案中目前節點的條件。 在以下範例中,您想要測試 結果集中的最後一個節點:
如需編寫條件運算式的 更多資訊和範例,請參閱「參考」 面板中的 <xsl:if> 區段 (「說明」>「參考」)。
套用多個條件 XSLT 區域
您可以編寫簡單的條件運算式,並將其插入到 XSLT 頁面中。如果在開啟條件區域對話框時已選取內容,該內容會置於 <xsl:choose> 區塊中。如果未選取內容,<xsl:choose> 區塊 會新增到頁面上的插入點。建議您 使用對話框開始使用,然後在程式碼檢視中 自訂運算式。
<xsl:choose> 元素 類似於其他語言中的 case 陳述式。 該元素提供了一種測試條件並根據結果採取相應動作的方法。<xsl:choose> 元素 可讓您測試多個條件。
在下方範例中,您想要測試看看內容 節點的 price 子元素是否小於 5。
在此範例中,下列程式碼會插入您的 XSLT 頁面中:
<xsl:choose>
<xsl:when test="price<5">
內容位於此處
</xsl:when>
<xsl:otherwise>
內容位於此處
</xsl:otherwise>
</xsl:choose>
指定條件並按一下「確定」後,另一個 <xsl:when> 標記 會插入 <xsl:choose> 區塊中。
如需撰寫條件運算式的更多資訊與範例, 請參閱「參考」面板中的 <xsl:choose> 區段 (「說明」>「參考」)。
設定條件區域 (If) 屬性
「設定條件區域」 屬性檢視窗的用途是變更 XSL 頁面中條件 區域所使用的條件。條件區域會測試條件並根據結果採取相應動作。
設定條件 (When) 屬性
「設定條件區域」 屬性檢視窗的用途是變更 XSL 頁面中多 條件區域所使用的條件。多條件區域會測試條件並根據結果採取相應動作。
插入 XSL 註解
您可以將 XSL 註解 標記新增至文件,也可以將選取範圍包覆在 XSL 註解標記中。
新增 XSL 註解標籤至文件
在「設計」檢視中,選取「插入」> 「XSLT 物件」>「XSL 註解」,輸入註解 內容 (或將方塊保持空白),然後按一下「確定」。
在「程式碼」檢視中,選取「插入」>「XSLT 物件」> 「XSL 註解」。
您也可以按一下「插入」面板的 XSLT 類別中的「XSL 註解」圖示。
將選取範圍包覆在 XSL 註解 標記中
使用 XPath 運算式產生器 來為 XML 資料新增運算式
XPath (XML 路徑語言) 是一種非 XML 語法,用於定址 XML 文件的部分。它主要用作 XML 資料的查詢語言,就如同 SQL 語言用於查詢資料庫一樣。如需更多 XPath 相關資訊,請參閱 W3C 網站上的 XPath 語言規格 www.w3.org/TR/xpath。
XPath 運算式產生器是 Dreamweaver 的一項功能,讓您建置簡單的 XPath 運算式來識別特定的資料節點以及重複區域。使用此方法而非從 XML 結構描述樹狀結構拖拽值的優點在於,您可以設定顯示值的格式。目前內文是根據在 開啟 XPath 運算式產生器對話框時插入點在 XSL 檔案中的位置來識別。 XML 綱要樹狀結構中目前的內容是粗體。 當您在此對話框內進行選取時,會生成相對於目前內容的正確 XPath 運算式。這簡化了為初學者和進階使用者撰寫正確 XPath 運算式的過程。
此功能的用意在於協助您建立簡單的 XPath 運算式,以識別特定節點或重複區域之用。 它無法讓您以手動方式編輯運算式。 如果您需要建立複雜的運算式,可以使用「XPath 運算式建立器」來開始,然後在「程式碼」檢視或以「屬性」檢視窗中自訂您的運算式。
建立 XPath 運算式以識別 特定節點
正確的 XPath 運算式會寫入運算式方塊中以識別節點。
如果您在 XML 結構描述樹中選取不同節點, 運算式會變更以反映您的選擇。
在下列範例中,您想要顯示 item 節點的 price 子元素:
此選取會在您的 XSLT 頁面中插入下列程式碼:
<xsl:value-of select="price"/>
當節點的值傳回數字時,格式化選取項目很有用。Dreamweaver 提供 預先定義的格式化函數清單。如需可用格式化函數和範例的完整清單,請參閱「參考」面板。
在下列範例中,您想要將 price 子元素 格式化為帶有兩位小數的貨幣:
這些 選項會在您的 XSLT 頁面中插入下列程式碼:<xsl:value-of select="format-number(provider/store/items/item/price,'$#.00')"/>
如需有關選取節點以傳回值的詳細資訊和範例,請參閱參照面板中的 <xsl:value-of/> 區段。
選取要重複的節點
您可以選取要重複的節點,並 選擇性地篩選結果。 在「XPath 運算式產生器」 對話框中,您選取的內容將包裝在 <xsl:for-each> 區塊內。 如果您尚未選取內容,<xsl:for-each> 區塊 將在游標的插入點輸入。
正確的 XPath 運算式會寫入「運算式」 方塊中以識別節點。
重複項目在 XML 結構描述樹狀結構中 以加號 (+) 符號識別。
在 以下範例中,您想要重複 XML 檔案內 每個 item 節點。
當 您按一下「確定」時,下列程式碼會插入到您的 XSLT 頁面中:
<xsl:for-each select="provider/store/items/item">
內容位於此處
</xsl:for-each>
在某些情況下,您可能想要 使用重複節點的子集,例如,您可能 只想要屬性具有特定值的項目。 在此情況下, 您需要建立篩選器。
篩選要重複的資料
使用篩選器來識別具有特定屬性值的重複節點。
篩選
指定包含您要篩選之資料的重複節點。彈出式選單提供相對於您在 XML 結構描述樹狀結構中 選取之節點的上階節點清單。
位置
指定「篩選依據」節點的屬性或子元素,用於限制結果。您可以從彈出式選單中選取屬性 或子元素,或者可以在此欄位中輸入您自己的 XPath 運算式,以識別結構描述樹狀結構內 更深處存在的子項。
運算子
指定要在篩選器 運算式中使用的比較運算子。
值
指定「篩選」節點中要檢查的值。 輸入該值。 如果為您的 XSLT 頁面定義了動態參數,您可以從彈出式選單中選取一個。
當您在彈出式選單中輸入值或進行選取時, 「運算式」方塊中的 XPath 運算式會變更。
在 以下範例中,您想要將結果集限制為那些 @available 屬性值 為 true 的 item 節點。
當 您按一下「確定」時,下列程式碼會插入到您的 XSLT 頁面中:<xsl:for-each select="provider/store/items/item[@available = 'true']"> 內容在此處 </xsl:for-each>
您需要將字串值 (例如 true) 圍上引號。 Dreamweaver 會為您編碼引號 ('),以便將其輸入為有效的 XHTML。
您可以建立更複雜的篩選器,讓您將上層節點指定為篩選條件的一部分。在 下列範例中,您要將結果集限制為那些 item 節點 ,其中 store 的 @id 屬性 等於 1,而且 item 的 price 節點 大於 5。
當 您按一下「確定」時,會在 XSLT 頁面中插入下列程式碼:<xsl:for-each select="provider/store[@id = 1]/items/item[price > 5]"> Content goes here </xsl:for-each>
如需重複區域的詳細資訊和 範例,請參閱「參考」面板中的 <xsl:for-each> 節。