Kebijakan XSLTransform

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

Apa

Kebijakan XSL Transform menerapkan transformasi bahasa lembar gaya yang dapat diperluas (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 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 Sumber 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>&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 masuk.

Message ->

<?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.


Referensi elemen

Konfigurasi kebijakan XSL Transformation menggunakan elemen berikut.

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

Variabel yang menyimpan output transformasi. OutputVariable tidak boleh berupa jenis Pesan, yaitu tidak boleh '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 menjadi HTML, jangan sertakan elemen ini.

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

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

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

Untuk contoh dan informasi selengkapnya, lihat postingan komunitas.

ref (Opsional)

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

Jika Anda menggunakan atribut ini, jangan gunakan atribut nilai.

nilai (Opsional)

Anda dapat menggunakan atribut ini untuk meng-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 dalam /resources/xsl. Kebijakan XSL hanya merujuk ke 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 di bagian /resources/xsl
  • Sumber XML yang akan diubah (biasanya pesan permintaan atau respons)

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

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


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 XSL Transform 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).
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.

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 XSL Transform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSL Transform policy is not of type xsl, then the deployment of the API proxy fails.

Topik terkait