您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
結果
XSL 轉換政策會將自訂的可延伸樣式表語言轉換 (XSLT) 套用至 XML 訊息,讓您將 XML 訊息轉換為其他格式,例如 XML、HTML 或純文字。這項政策通常用於整合支援 XML 的應用程式,但這些應用程式需要使用不同的 XML 格式來處理相同資料。
範例
下列範例顯示 XSL 轉換流程中的所有資源。
XSL 政策 ->
<XSL name="Transfor>mXM<L" R>esourceURLxsl://my_tra<nsform.xsl/R>eso<urceUR>L Sou<rcerequ>e<st/S>ource /XSL
簡單的 XSL 政策。請參閱下一個範例,瞭解政策 (my_transform.xsl) 中參照的 XSLT 樣式表。<Source> 元素非常重要。舉例來說,如果想轉換的 XML 位於回應中,除非將來源設為 response (且政策已附加至回應流程),否則不會進行轉換。但在此情況下,要轉換的 XML 位於要求中。
XSLT 樣式表 ->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ver>sio<n="1.0" xsl:o>utp<ut method="text"/> <xsl:vari>abl<e name=&q>uot<;newline">; < xsl:text /xsl:text > /<xsl:vari>&able &xsl<:template> matc<h="/" xsl:textlt;Li>fegt;</xsl:tex>t xsl:value-of select="$newline"</ xsl>:text<Here are the odd-numbered items> from< the list:/xsl:text xsl:value-o>f selec<t="$newline"/ xsl:for->each sele<ct="list/listitem&q>uot; < xsl:if test="(pos>ition() m<od 2) = 1" xsl:num>ber for<mat=&qu>ot;1.< "/ > < xsl:val>&ue-of se&lec<t=".>&<quot;/ > < xsl:value-of s>elect="$newline"/ /xsl:if /xsl:for-each xsl:textlt;/Lifegt;/xsl:text /xsl:template /xsl:stylesheet
政策中參照的 my_transform.xsl 樣式表。前往下一個範例,查看傳入的 XML 訊息範例。
訊息 ->
<?xml version=">1<.0&q>uot<;? li>st titleA few of my favor<ite al>bum<s/title > listitemA Lo<ve Suprem>e/l<istitem > listitem<Beat Craz>y/l<istitem > listitemHere Come the< Warm Jet>s/l<istitem > listitemKi<nd of Blu>e/l<istitem > listitemLond<on Callin>g/l<istitem > listitemRemai<n in Ligh>t/l<istitem > listitemThe J<oshua Tre>e/l<istitem > listitemThe Indestructible Beat< of Sowet>o</list>item /list
要求中的範例訊息 (在第一個範例的政策 <Source>request</Source> 元素中指出)。
轉換後的訊息
<Life> Here are the odd-numbered items from the list: 1. A Love Supreme 3. Here Come the Warm Jets 5. London Calling 7. The Joshua Tree </Life>
將這些範例的 XSLT 樣式表套用至 XML 訊息後,轉換完成的訊息。
元素參考資料
使用下列元素設定 XSL 轉換政策。
| 欄位名稱 | 說明 | |||
|---|---|---|---|---|
| 名稱 (必要) |
政策名稱。名稱只能使用以下字元:
A-Z0-9._\-$ %。不過,管理使用者介面會強制執行其他限制,例如自動移除非英數字元。
|
|||
| 來源 (選填) |
包含需要擷取資訊的訊息。通常這個值會設為 request 或 response,視要轉換的訊息是內送或外寄而定。
|
|||
| OutputVariable (選用) |
儲存轉換輸出內容的變數。OutputVariable 不可以是 Message 型別,也就是說,不能是「message」、「request」或「response」。您應將這個元素設為自訂變數,然後使用該變數。 如要將訊息內容替換為轉換輸出內容,請刪除這個元素。舉例來說,如果您要將郵件轉換為 HTML,請勿加入這個 元素。 |
|||
| ResourceURL (必要) | 用於轉換訊息的 XSLT 檔案。 | |||
| 參數 (選用) | ignoreUnresolvedVariables (選用) |
忽略 XSLT 指令碼指令中任何未解決的變數錯誤。
有效值:true/false
預設值為 false。
|
||
| 參數 (選用) | 名稱 (必填) |
參數支援在樣式表中使用 XSL 參數,您在此政策中新增的名稱就是 XSL 參數的名稱。舉例來說,如果您輸入「uid」名稱,XSL 可能會類似這樣: 參數的值來自於參照內容變數 (由 如需範例和更多資訊,請參閱社群貼文。 |
||
| ref (選填) |
指定從變數取得值的參照。舉例來說,如果「uid」參數需要從名為「authn.uid」的變數取得值,則「Parameter」元素會如下所示: 如果使用這項屬性,請勿使用值屬性。 |
|||
| 值 (選填) |
你可以使用這項屬性,將參數值硬式編碼。 如果使用這項屬性,請勿使用 ref 屬性。 |
|||
使用須知
XSLT 會在獨立的 .xsl 檔案中實作,並儲存在 API Proxy 的 /resources/xsl 下。XSL 政策只會參照 XSL 檔案。詳情請參閱「資源檔案」。
XSL 政策需要兩項輸入內容:
- XSLT 樣式表的名稱,其中包含一組轉換規則,儲存在 API Proxy 的
/resources/xsl下方 - 要轉換的 XML 來源 (通常是要求或回應訊息)
系統不支援 <xsl:include> 和 <xsl:import>。
Apigee Edge 採用 Saxon XSLT 處理器,並支援 XSLT 1.0 和 2.0。
錯誤參考資料
執行階段錯誤
執行政策時,可能會發生這些錯誤。
| 錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
如果 XSL 轉換政策的 <Source> 元素中指定的訊息或字串變數超出範圍 (不適用於執行政策的特定流程),或是無法解析 (未定義),就會發生這個錯誤。 |
build |
steps.xsl.XSLEvaluationFailed |
500 | 如果輸入的 XML 酬載無法使用/格式錯誤,或是 XSLTransform 政策失敗/無法依據 XSL 檔案中提供的轉換規則轉換輸入 XML 檔案,就會發生這個錯誤。導致 XSLTransform 政策失敗的原因有很多。錯誤訊息失敗的原因會提供原因詳細資訊。 | build |
部署錯誤
若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。
| 錯誤名稱 | 原因 | 修正 |
|---|---|---|
XSLEmptyResourceUrl |
如果 XSL 轉換政策中的 <ResourceURL> 元素為空白,則 API Proxy 的部署作業會失敗。 |
build |
XSLInvalidResourceType |
如果 XSL 轉換政策的 <ResourceURL> 元素中指定的資源類型不屬於 xsl 類型,API Proxy 的部署就會失敗。 |
build |