Kebijakan XSLTransform

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Apa

Kebijakan XSL Transform menerapkan Extensible stylesheet language transformasi (XSLT) kustom ke pesan XML, sehingga Anda dapat mengubahnya dari XML ke format lain, seperti XML, HTML, atau teks biasa. Kebijakan ini sering digunakan untuk mengintegrasikan aplikasi yang mendukung XML, tetapi memerlukan format XML yang berbeda untuk data yang sama.

Contoh

Contoh berikut menunjukkan semua resource dalam 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 direferensikan dalam kebijakan (my_transform.xsl). Elemen <Source> penting. Misalnya, jika XML yang ingin Anda ubah berada dalam respons, transformasi tidak akan terjadi kecuali Anda menetapkan Sumber ke response (dan kebijakan disertakan ke alur respons). Namun dalam hal 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>&lt;Life&gt;</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>&lt;/Life&gt;</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.


Referensi elemen

Konfigurasi kebijakan Transformasi XSL menggunakan elemen berikut.

Nama Kolom Deskripsi
Nama (Wajib) Nama kebijakan. Karakter yang dapat digunakan dalam nama dibatasi untuk: A-Z0-9._\-$ %. Namun, UI Pengelolaan menerapkan pembatasan tambahan, seperti otomatis menghapus karakter yang bukan alfanumerik.
Sumber (Opsional) Berisi pesan yang informasinya perlu diekstrak. Biasanya nilai ini ditetapkan ke request atau response, bergantung pada apakah pesan yang akan diubah merupakan pesan masuk atau keluar.
  • Jika sumber tidak ada, pesan akan dianggap sebagai pesan sederhana. Misalnya, <Source>message</Source>
  • Jika variabel sumber tidak dapat di-resolve, atau di-resolve menjadi jenis non-pesan, langkah transformasi akan gagal.
OutputVariable (Opsional)

Variabel yang menyimpan output transformasi. OutputVariable tidak boleh berupa jenis Pesan, artinya, tidak boleh berupa 'message', 'request', atau 'response'. Anda harus menetapkan elemen ini sebagai variabel kustom, lalu menggunakan variabel tersebut.

Untuk mengganti konten pesan dengan output transformasi, hapus elemen ini. Misalnya, jika Anda mengubah pesan ke HTML, jangan sertakan elemen ini.

ResourceURL (Wajib) File XSLT yang akan digunakan untuk mengubah pesan.
Parameter (Opsional) abaikanUnresolvedVariables (Opsional)
Mengabaikan error variabel yang belum terselesaikan dalam petunjuk skrip XSLT.
Nilai valid: benar/salah
Nilai default: false
Parameter (Opsional) nama (Wajib)

Parameter mendukung penggunaan parameter XSL di stylesheet Anda, dengan nama yang Anda tambahkan di sini dalam kebijakan adalah nama parameter XSL. Misalnya, jika Anda memasukkan nama "uid", XSL Anda mungkin akan terlihat seperti ini: <xsl:param name="uid" select="''"/>).

Parameter ini mendapatkan nilainya dari referensi ke variabel konteks (yang diidentifikasi oleh atribut ref) atau dengan value eksplisit.

Untuk contoh dan informasi selengkapnya, lihat http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (Opsional)

Menentukan referensi yang menjadi sumber nilai dari variabel. Misalnya, jika parameter "uid" perlu mendapatkan nilainya dari variabel yang disebut "authn.uid", elemen Parameter akan terlihat seperti ini: <Parameter name="uid" ref="authn.uid"/>

Jika Anda menggunakan atribut ini, jangan gunakan atribut nilai.

value (Opsional)

Anda dapat menggunakan atribut ini untuk melakukan hard code nilai parameter.

Jika Anda menggunakan atribut ini, jangan gunakan atribut ref.


Catatan penggunaan

XSLT diimplementasikan dalam file .xsl mandiri, yang disimpan di proxy API di /resources/xsl. Kebijakan XSL hanya mereferensikan file XSL. Lihat File resource untuk mengetahui informasi selengkapnya.

Kebijakan XSL memerlukan dua input:

  • Nama stylesheet XSLT, yang berisi serangkaian aturan transformasi) yang disimpan di proxy API dalam /resources/xsl
  • Sumber XML yang akan diubah (biasanya pesan permintaan atau respons)

<xsl:include> dan <xsl:import> tidak didukung.

Apigee Edge mengandalkan prosesor Saxon XSLT, dan mendukung XSLT 1.0 dan 2.0.


Referensi error

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

Kode kesalahan Status HTTP Penyebab Perbaiki
steps.xsl.XSLSourceMessageNotAvailable 500 Error ini terjadi jika variabel string atau pesan yang ditentukan dalam elemen <Source> kebijakan Transformasi XSL berada di luar cakupan (tidak tersedia di alur tertentu tempat kebijakan dijalankan) atau tidak dapat diselesaikan (tidak ditentukan).
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.

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Penyebab Perbaiki
XSLEmptyResourceUrl Jika elemen <ResourceURL> dalam kebijakan Transformasi XSL kosong, deployment proxy API akan gagal.
XSLInvalidResourceType Jika jenis resource yang ditentukan dalam elemen <ResourceURL> kebijakan Transformasi XSL bukan jenis xsl, deployment proxy API akan gagal.

Topik terkait