查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
結果
XSL 轉換政策會將自訂的可延伸樣式表語言轉換 (XSLT) 套用至 XML 訊息,可讓您從 XML 轉換成其他格式,例如 XML、HTML 或 plain (純文字) 文字。這項政策通常用於整合支援 XML 但需要 為相同資料套用不同的 XML 格式
範例
下列範例顯示 XSL 轉換流程中的所有資源。
XSL 政策 ->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
簡易 XSL 政策。前往下一個範例,查看
政策 (my_transform.xsl
)。<Source>
元素非常重要。
舉例來說,如果回應中包含您要轉換的 XML,則轉換不會
除非您將來源設為 response
(且政策已附加至
回應流程)。但在這個例子中,要轉換的 XML 是在要求中。
XSLT 樣式表 ->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text"/> <xsl:variable name="newline"> <xsl:text> </xsl:text> </xsl:variable> <xsl:template match="/"> <xsl:text><Life></xsl:text> <xsl:value-of select="$newline"/> <xsl:text>Here are the odd-numbered items from the list:</xsl:text> <xsl:value-of select="$newline"/> <xsl:for-each select="list/listitem"> <xsl:if test="(position() mod 2) = 1"> <xsl:number format="1. "/> <xsl:value-of select="."/> <xsl:value-of select="$newline"/> </xsl:if> </xsl:for-each> <xsl:text></Life></xsl:text> </xsl:template> </xsl:stylesheet>
政策所參照的 my_transform.xsl
樣式表。前往下一個
查看傳入 XML 訊息的範例。
訊息 ->
<?xml version="1.0"?> <list> <title>A few of my favorite albums</title> <listitem>A Love Supreme</listitem> <listitem>Beat Crazy</listitem> <listitem>Here Come the Warm Jets</listitem> <listitem>Kind of Blue</listitem> <listitem>London Calling</listitem> <listitem>Remain in Light</listitem> <listitem>The Joshua Tree</listitem> <listitem>The Indestructible Beat of Soweto</listitem> </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._\-$ % 。不過,管理 UI 會強制執行其他限制,
例如自動移除非英數字元
|
|||
來源 (選填) |
包含需要擷取資訊的訊息。這個值通常為
設為 request 或 response ,取決於發送訊息的對象
轉換為內式或傳出的轉換
|
|||
輸出變數 (選用) |
儲存轉換輸出內容的變數。輸出變數不得 訊息類型,即不能是「message」、「request」或「response」。請 請將此元素設為自訂變數,然後取用該變數。 如要以轉換的輸出內容取代訊息內容,請刪除 元素。舉例來說,如果您要將訊息轉換為 HTML,請勿加入這段程式碼, 元素。 |
|||
ResourceURL (Mandatory) | 要用來轉換訊息的 XSLT 檔案。 | |||
參數 (選用) | 忽略未解析的變數 (選用) |
忽略 XSLT 指令碼指示中任何未解決的變數錯誤。
有效值:true/false
預設值為 false。
|
||
參數 (選用) | 名稱 (必要) |
參數支援在樣式表中使用 XSL 參數,也就是您要新增名稱
這裡是 XSL 參數的名稱舉例來說,如果您輸入名稱
「uid」則範例如下: 參數會從結構定義變數的參照取得值 (使用
如需範例和更多資訊,請參閱 http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864。 |
||
參考資料 (選填) |
指定從變數中取得值的參照。舉例來說
"uid"參數的值必須從名為「authn.uid」的變數取得,
元素看起來會像這樣: 使用這項屬性時,請勿使用值屬性。 |
|||
值 (選填) |
您可以使用這項屬性,對參數值進行硬式編碼。 加入這項屬性時,請勿使用 ref 屬性。 |
使用須知
XSLT 會在獨立的 .xsl
檔案中實作,該檔案會儲存在 API 中
位於 /resources/xsl
下。XSL 政策只會參照 XSL 檔案。詳情請見
資源檔案。
XSL 政策需要兩個輸入內容:
- XSLT 樣式表的名稱,其中包含一組轉換規則,儲存於
/resources/xsl
下的 API Proxy - 要轉換的 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 |