Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Baca dokumentasi Apigee Edge.
Apa
Kebijakan XSLTransform menerapkan Transformasi bahasa stylesheet yang dapat diperluas (XSLT) kustom ke pesan XML, yang memungkinkan Anda 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 merupakan Kebijakan yang dapat diperluas, dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau pemanfaatan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
Input
Kebijakan XSL menggunakan input berikut:
- (Wajib) Nama stylesheet XSLT, yang berisi serangkaian aturan transformasi yang disimpan di proxy API pada
/resources/xsl
. - (Wajib) XML yang akan ditransformasi (biasanya pesan permintaan atau respons).
- (Opsional) Nama variabel yang menyimpan output.
- (Opsional) Parameter yang cocok dengan parameter di stylesheet XSL.
Prosesor penguraian
Apigee mengandalkan prosesor Saxon XSLT, serta 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>
sangat penting.
Misalnya, jika XML yang ingin Anda ubah berada dalam respons, transformasi tidak akan
terjadi kecuali Anda menetapkan <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 yang 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 pada contoh pertama).
Pesan 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 stylesheet XSLT dari contoh ini diterapkan ke pesan XML.
Elemen <XSL>
Menentukan kebijakan XSLTransform
.
Nilai Default | t/a |
Wajib? | Diperlukan |
Type | 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 untuk:
A-Z0-9._\-$ % . Namun, UI Apigee menerapkan pembatasan tambahan, seperti penghapusan otomatis karakter yang bukan alfanumerik. |
Diperlukan | String |
Referensi elemen turunan
Bagian ini menjelaskan elemen turunan <XSL>
.
<OutputVariable>
Variabel yang menyimpan output transformasi. Anda harus menetapkan elemen ini menjadi variabel kustom, lalu memakai variabel tersebut.
Nilai Default | t/a |
Wajib? | Opsional |
Type | String |
Elemen Induk |
<XSL>
|
Elemen Turunan | Tidak ada |
Nilai <OutputVariable>
tidak boleh berupa jenis pesan; artinya, nilai tidak boleh berupa
message
, request
, atau response
.
Untuk mengganti konten pesan dengan output transformasi, hapus elemen ini. Misalnya, jika Anda mengubah pesan ke HTML, jangan sertakan elemen ini.
<Parameters>
Menambahkan dukungan untuk elemen <xsl:param>
di stylesheet Anda. Anda menentukan setiap parameter sebagai elemen turunan <Parameter>
dari elemen ini.
Nilai Default | t/a |
Wajib? | Opsional |
Type | 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 menampilkan error jika menemukan variabel yang belum terselesaikan. |
Opsional | Boolean |
<Parameter>
Menentukan parameter dalam elemen <Parameters>
.
Nilai Default | t/a |
Wajib? | Opsional |
Type | Objek kompleks |
Elemen Induk |
<Parameters>
|
Elemen Turunan | Tidak ada |
Elemen <Parameter>
memiliki atribut berikut:
Atribut | Wajib? | Jenis | Deskripsi |
---|---|---|---|
name |
Diperlukan | 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 menggunakan atribut |
value |
Opsional | String |
Menentukan nilai hard code untuk parameter. Misalnya, jika parameter bernama <Parameter name="answer" value="42"/> Jika Anda menggunakan atribut ini, jangan menggunakan atribut |
Parameter ini mendapatkan nilainya dari atribut ref
atau dengan value
eksplisit.
Untuk contoh dan informasi selengkapnya, lihat Bagaimana sebaiknya parameter opsional pada kebijakan Transformasi XSL digunakan?.
<ResourceURL>
File XSL yang digunakan Apigee untuk mentransformasi pesan. Nilai elemen ini adalah
nama stylesheet XSL yang disimpan di proxy API pada /resources/xsl
.
Nilai Default | t/a |
Wajib? | Diperlukan |
Type | 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 merupakan pesan masuk atau keluar.
Nilai Default | t/a |
Wajib? | Opsional |
Type | String |
Elemen Induk |
<XSL>
|
Elemen Turunan | Tidak ada |
File XSL yang menentukan transformasi ditentukan oleh <ResourceURL>
.
- Jika sumber tidak ada, pesan akan diperlakukan sebagai pesan sederhana. Misalnya,
<Source>message</Source>
- Jika variabel sumber tidak dapat diselesaikan, atau di-resolve menjadi jenis non-pesan, langkah transformasi akan gagal.
Referensi error
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kesalahan | Status HTTP | Penyebab | Perbaikan |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Error ini terjadi jika variabel string atau pesan yang ditentukan dalam elemen <Source> kebijakan XSLTransform berada di luar cakupan (tidak tersedia di alur spesifik tempat kebijakan dijalankan) atau tidak dapat diselesaikan (tidak ditentukan).
|
build |
steps.xsl.XSLEvaluationFailed |
500 |
Error ini terjadi jika payload XML input tidak tersedia/salah format atau kebijakan XSLTransform gagal/tidak dapat mengubah file XML input berdasarkan aturan transformasi yang disediakan dalam file XSL. Ada berbagai penyebab gagalnya kebijakan XSLTransform. Alasan kegagalan dalam pesan error akan memberikan informasi selengkapnya tentang penyebabnya. | build |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaikan |
---|---|---|
XSLEmptyResourceUrl |
Jika elemen <ResourceURL> dalam kebijakan XSLTransform kosong, deployment proxy API akan gagal. |
build |
XSLInvalidResourceType |
Jika jenis resource yang ditentukan dalam elemen <ResourceURL> kebijakan XSLTransform bukan jenis xsl , deployment proxy API akan gagal. |
build |