kebijakan XSLTransform

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

ikon kebijakan

Apa

Kebijakan XSLTransform menerapkan Extensible kustom transformasi bahasa stylesheet (XSLT) untuk Pesan XML, memungkinkan Anda mengubahnya dari XML ke format lain, seperti HTML atau teks biasa teks. 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 dapat menimbulkan biaya atau implikasi penggunaan, 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 kumpulan aturan transformasi yang disimpan di proxy API di bagian /resources/xsl.
  • (Wajib) XML yang akan ditransformasi (biasanya permintaan atau respons pesan ini).
  • (Opsional) Nama variabel yang menyimpan output.
  • (Opsional) Parameter yang cocok dengan parameter di stylesheet XSL.

Prosesor penguraian

Apigee mengandalkan Saxon XSLT prosesor, 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> itu penting. Misalnya, jika XML yang ingin Anda ubah ada dalam respons, transformasi tidak akan terjadi kecuali Anda menyetel <Source> ke response (dan kebijakan tersebut disertakan pada 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. Ke yang berikutnya contoh 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 <Source>request</Source> 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 stylesheet XSLT dari contoh ini diterapkan ke XML untuk membuat pesan email baru.

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 untuk: A-Z0-9._\-$ %. Namun, UI Apigee menerapkan pembatasan tambahan, seperti menghapus secara otomatis karakter yang bukan alfanumerik. Wajib String

Referensi elemen turunan

Bagian ini menjelaskan elemen turunan dari <XSL>.

<OutputVariable>

Variabel yang menyimpan output transformasi. Anda seharusnya menyetel elemen ini menjadi variabel kustom, lalu memakai variabel tersebut.

Nilai Default t/a
Wajib? Opsional
Jenis String
Elemen Induk <XSL>
Elemen Turunan Tidak ada

Nilai <OutputVariable> tidak boleh berupa jenis pesan; artinya, tidak bisa message, request, atau response.

Untuk mengganti konten pesan dengan output transformasi, hapus ini . Misalnya, jika Anda mengubah pesan ke HTML, jangan sertakan pesan 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
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 skrip XSLT petunjuk. Nilai defaultnya adalah false, yang berarti secara default, kebijakan akan memunculkan {i>error<i} jika menemukan variabel yang tidak terselesaikan. 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 name pada elemen <xsl:param> di spreadsheet gaya.

Misalnya, jika Anda memasukkan nama uid, XSL Anda mungkin terlihat seperti berikut:

<xsl:param name="uid" select="''"/>

ref Opsional String

Mengarah ke variabel konteks yang berisi nilai untuk parameter. Nilai untuk Variabel konteks ref harus ditetapkan sebelum evaluasi kebijakan ini.

Misalnya, jika Parameter uid harus mendapatkan nilainya dari variabel bernama authn.uid, elemen <Parameter> akan terlihat seperti ini hal berikut:

<Parameter name="uid" ref="authn.uid"/>

Jika Anda menggunakan atribut ini, jangan gunakan atribut value.

value Opsional String

Menentukan nilai hard code untuk parameter. Misalnya, jika parameter bernama answer harus memiliki nilai 42, elemen <Parameter> akan terlihat seperti berikut:

<Parameter name="answer" value="42"/>

Jika Anda menggunakan atribut ini, jangan gunakan atribut ref.

Parameter ini mendapatkan nilainya dari atribut ref atau dengan value.

Untuk contoh dan informasi selengkapnya, lihat Bagaimana haruskah parameter opsional pada kebijakan Transformasi XSL harus 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? Wajib
Jenis String
Elemen Induk <XSL>
Elemen Turunan Tidak ada

Contoh:

<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>

Untuk informasi selengkapnya, lihat file resource.

<Source>

Menentukan pesan yang ditransformasi. Biasanya nilai ini ditetapkan ke request atau response, bergantung pada apakah pesan akan yang akan ditransformasi adalah 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 menjadi jenis bukan pesan, gagalnya langkah transformasi.

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).
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 Perbaikan
XSLEmptyResourceUrl Jika elemen <ResourceURL> dalam kebijakan XSLTransform kosong, deployment proxy API akan gagal.
XSLInvalidResourceType Jika jenis resource yang ditentukan dalam elemen <ResourceURL> kebijakan XSLTransform bukan jenis xsl, deployment proxy API akan gagal.

Topik terkait