Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi
Apigee Edge.
Kebijakan XSLTransform menerapkan Extensible Stylesheet Language Transformations (XSLT) kustom ke pesan XML, sehingga Anda dapat mengubahnya dari XML ke format lain, seperti HTML atau teks biasa. Kebijakan ini sering digunakan untuk mengintegrasikan aplikasi yang mendukung XML, tetapi memerlukan format berbasis XML yang berbeda untuk data yang sama.
Kebijakan ini adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaannya, lihat Jenis kebijakan.
Input
Kebijakan XSL menggunakan input berikut:
- (Wajib) Nama stylesheet XSLT, yang berisi serangkaian
aturan transformasi yang disimpan di proxy API di
/resources/xsl. - (Wajib) XML yang akan diubah (biasanya pesan permintaan atau respons).
- (Opsional) Nama variabel yang menyimpan output.
- (Opsional) Parameter yang cocok dengan parameter dalam stylesheet XSL.
Pemroses penguraian
Apigee mengandalkan prosesor XSLT Saxon, dan mendukung XSLT 1.0 dan 2.0.
Elemen XSL yang tidak didukung
Kebijakan XSL tidak mendukung elemen XSL berikut:
<xsl:include><xsl:import>
Sampel
Contoh berikut menunjukkan alur transformasi XSL:
Kebijakan XSL -->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
Kebijakan XSL sederhana. Buka contoh berikutnya untuk melihat stylesheet XSLT yang dirujuk dalam
kebijakan (my_transform.xsl). Elemen <Source> penting.
Misalnya, jika XML yang ingin Anda ubah ada dalam respons, transformasi tidak akan
terjadi kecuali jika Anda menyetel <Source> ke response (dan kebijakan dilampirkan ke
alur respons). Namun, dalam kasus ini, XML yang akan diubah ada dalam permintaan.
Stylesheet 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>
Stylesheet my_transform.xsl yang dirujuk dalam kebijakan. Buka contoh
berikutnya untuk melihat contoh pesan XML masuk.
Pesan -->
<?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>
Contoh pesan dalam permintaan (ditunjukkan dalam elemen
<Source>request</Source> kebijakan dalam contoh pertama).
Pesan yang diubah
<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>
Pesan yang diubah setelah lembar gaya XSLT dari sampel ini diterapkan ke pesan XML.
Elemen <XSL>
Menentukan kebijakan XSLTransform.
| Nilai Default | t/a |
| Wajib? | Wajib |
| Jenis | Objek kompleks |
| Elemen Induk | t/a |
| Elemen Turunan |
<OutputVariable><Parameters><ResourceURL><Source> |
Elemen <XSL> memiliki atribut berikut:
| Atribut | Deskripsi | Wajib? | Jenis |
|---|---|---|---|
name |
Nama kebijakan. Karakter yang dapat Anda gunakan dalam nama dibatasi menjadi:
A-Z0-9._\-$ %. Namun, UI Apigee menerapkan batasan tambahan,
seperti menghapus karakter yang bukan alfanumerik secara otomatis. |
Wajib | String |
Referensi elemen turunan
Bagian ini menjelaskan elemen turunan <XSL>.
<OutputVariable>
Variabel yang menyimpan output transformasi. Anda harus menetapkan elemen ini sebagai variabel kustom, lalu menggunakan variabel tersebut.
| Nilai Default | t/a |
| Wajib? | Opsional |
| Jenis | String |
| Elemen Induk |
<XSL>
|
| Elemen Turunan | Tidak ada |
Nilai <OutputVariable> tidak boleh berjenis message; yaitu, tidak boleh
message, request, atau response.
Untuk mengganti konten pesan dengan output transformasi, hapus elemen ini. Misalnya, jika Anda mengubah pesan menjadi HTML, jangan sertakan elemen ini.
<Parameters>
Menambahkan dukungan untuk elemen <xsl:param> dalam stylesheet Anda. Anda menentukan
setiap parameter sebagai elemen turunan <Parameter> dari elemen ini.
| Nilai Default | t/a |
| Wajib? | Opsional |
| Jenis | Array elemen <Parameter> |
| Elemen Induk |
<XSL>
|
| Elemen Turunan |
<Parameter> |
Elemen <Parameters> memiliki atribut berikut:
| Atribut | Deskripsi | Wajib? | Jenis |
|---|---|---|---|
ignoreUnresolvedVariables |
Menentukan apakah kebijakan mengabaikan error variabel yang belum terselesaikan dalam petunjuk skrip XSLT. Nilai defaultnya adalah false, yang berarti bahwa, secara default,
kebijakan akan memunculkan error jika menemukan variabel yang belum diselesaikan. |
Opsional | Boolean |
<Parameter>
Menentukan parameter dalam elemen <Parameters>.
| Nilai Default | t/a |
| Wajib? | Opsional |
| Jenis | Objek kompleks |
| Elemen Induk |
<Parameters>
|
| Elemen Turunan | Tidak ada |
Elemen <Parameter> memiliki atribut berikut:
| Atribut | Wajib? | Jenis | Deskripsi |
|---|---|---|---|
name |
Wajib | String |
Nama parameter. Apigee mencocokkan nilai yang Anda tetapkan di sini dengan nilai
atribut Misalnya, jika Anda memasukkan nama
<xsl:param name="uid" select="''"/> |
ref |
Opsional | String |
Menunjuk ke variabel konteks yang menyimpan nilai untuk parameter. Nilai untuk
variabel konteks Misalnya, jika parameter
<Parameter name="uid" ref="authn.uid"/> Jika Anda menggunakan atribut ini, jangan gunakan atribut |
value |
Opsional | String |
Menentukan nilai hard-coded untuk parameter. Misalnya, jika parameter bernama
<Parameter name="answer" value="42"/> Jika Anda menggunakan atribut ini, jangan gunakan atribut |
Parameter mendapatkan nilainya dari atribut ref atau dengan
value eksplisit.
Untuk contoh dan informasi selengkapnya, lihat Bagaimana cara menggunakan parameter opsional pada kebijakan XSL Transform?.
<ResourceURL>
File XSL yang digunakan Apigee untuk mengubah pesan. Nilai elemen ini adalah
nama stylesheet XSL yang disimpan di proxy API dalam /resources/xsl.
| Nilai Default | t/a |
| Wajib? | Wajib |
| Jenis | String |
| Elemen Induk |
<XSL>
|
| Elemen Turunan | Tidak ada |
Contoh:
<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>
Untuk mengetahui informasi selengkapnya, lihat file resource.
<Source>
Menentukan pesan yang diubah. Biasanya nilai ini ditetapkan ke request atau response, bergantung pada apakah pesan yang akan diubah adalah pesan masuk atau keluar.
| Nilai Default | t/a |
| Wajib? | Opsional |
| Jenis | String |
| Elemen Induk |
<XSL>
|
| Elemen Turunan | Tidak ada |
File XSL yang menentukan transformasi ditentukan oleh <ResourceURL>.
- Jika sumber tidak ada, sumber akan diperlakukan sebagai pesan sederhana. Misalnya,
<Source>message</Source> - Jika variabel sumber tidak dapat di-resolve, atau di-resolve ke jenis non-pesan, langkah transformasi akan gagal.
Referensi error
Runtime errors
These errors can occur when the policy executes.
| Fault code | HTTP status | Cause | Fix |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
This error occurs if the message or string variable specified in the <Source> element of the
XSLTransform policy is either out of scope (not available in the specific flow where the
policy is being executed) or can't be resolved (is not defined).
|
build |
steps.xsl.XSLEvaluationFailed |
500 |
This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause. | build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
| Error name | Cause | Fix |
|---|---|---|
XSLEmptyResourceUrl |
If the <ResourceURL> element in the XSLTransform policy is empty, then the
deployment of the API proxy fails. |
build |
XSLInvalidResourceType |
If the resource type specified in the <ResourceURL> element of the XSLTransform
policy is not of type xsl, then the deployment of the API proxy fails. |
build |