นโยบาย XSLTransform

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

อะไร

นโยบายการแปลง XSL จะใช้การแปลงภาษาชีตสไตล์แบบขยายได้ (XSLT) ที่กำหนดเองกับข้อความ XML ซึ่งช่วยให้คุณแปลงข้อความจาก XML เป็นรูปแบบอื่น เช่น XML, HTML หรือข้อความธรรมดาได้ โดยมักใช้นโยบายนี้เพื่อผสานรวมแอปพลิเคชันที่รองรับ XML แต่ต้องใช้ รูปแบบ XML ที่แตกต่างกันสำหรับข้อมูลเดียวกัน

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงทรัพยากรทั้งหมดในขั้นตอนการแปลง XSL

นโยบาย XSL ->

<XSL name="TransformXML">
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>
  <Source>request</Source>
</XSL>

นโยบาย XSL อย่างง่าย ไปที่ตัวอย่างถัดไปเพื่อดูสไตล์ชีต XSLT ที่อ้างอิงใน นโยบาย (my_transform.xsl) องค์ประกอบ <Source> มีความสำคัญ ตัวอย่างเช่น หาก XML ที่คุณต้องการแปลงอยู่ในการตอบกลับ การแปลงจะไม่เกิดขึ้น เว้นแต่คุณจะตั้งค่าแหล่งที่มาเป็น response (และแนบนโยบายกับการไหลของการตอบกลับ) แต่ในกรณีนี้ XML ที่จะแปลงอยู่ในคำขอ

สไตล์ชีต 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>

my_transform.xsl สไตล์ชีตที่อ้างอิงในนโยบาย ไปที่ตัวอย่างถัดไป เพื่อดูตัวอย่างข้อความ XML ขาเข้า

ข้อความ ->

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

ข้อความตัวอย่างในคำขอ (ระบุไว้ในองค์ประกอบ <Source>request</Source> ของนโยบายในตัวอย่างแรก)

ข้อความที่แปลงแล้ว

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

ข้อความที่แปลงแล้วหลังจากใช้สไตล์ชีต XSLT จากตัวอย่างเหล่านี้กับข้อความ XML


การอ้างอิงองค์ประกอบ

กำหนดค่านโยบายการแปลง XSL โดยใช้องค์ประกอบต่อไปนี้

ชื่อช่อง คำอธิบาย
ชื่อ (ต้องระบุ) ชื่อนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้ดังนี้ A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการจะบังคับใช้ข้อจำกัดเพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ
แหล่งที่มา (ไม่บังคับ) มีข้อความที่ต้องดึงข้อมูล โดยปกติแล้วค่านี้จะตั้งเป็น request หรือ response ขึ้นอยู่กับว่าข้อความที่จะแปลงเป็นข้อความขาเข้าหรือขาออก
  • หากไม่มีแหล่งที่มา ระบบจะถือว่าเป็นข้อความธรรมดา เช่น <Source>ข้อความ</Source>
  • หากไม่สามารถระบุตัวแปรต้นทาง หรือระบุเป็นประเภทที่ไม่ใช่ข้อความ ขั้นตอนการเปลี่ยนรูปแบบจะล้มเหลว
OutputVariable (ไม่บังคับ)

ตัวแปรที่จัดเก็บเอาต์พุตของการเปลี่ยนรูปแบบ OutputVariable ต้องไม่ใช่ประเภทข้อความ ซึ่งก็คือต้องไม่ใช่ "message" "request" หรือ "response" คุณควร ตั้งค่าองค์ประกอบนี้ให้เป็นตัวแปรที่กำหนดเอง แล้วใช้ตัวแปรนั้น

หากต้องการแทนที่เนื้อหาข้อความด้วยเอาต์พุตของการเปลี่ยนรูปแบบ ให้ลบองค์ประกอบนี้ เช่น หากคุณแปลงข้อความเป็น HTML อย่าใส่องค์ประกอบนี้

ResourceURL (ต้องระบุ) ไฟล์ XSLT ที่จะใช้ในการแปลงข้อความ
พารามิเตอร์ (ไม่บังคับ) ignoreUnresolvedVariables (ไม่บังคับ)
ไม่สนใจข้อผิดพลาดของตัวแปรที่ยังไม่ได้รับการแก้ไขในคำสั่งสคริปต์ XSLT
ค่าที่ใช้ได้: จริง/เท็จ
ค่าเริ่มต้น: false
พารามิเตอร์ (ไม่บังคับ) name (ต้องระบุ)

พารามิเตอร์รองรับการใช้พารามิเตอร์ XSL ในชีตสไตล์ โดยชื่อที่คุณเพิ่ม ที่นี่ในนโยบายคือชื่อของพารามิเตอร์ XSL ตัวอย่างเช่น หากคุณป้อนชื่อ "uid" XSL อาจมีลักษณะดังนี้ <xsl:param name="uid" select="''"/>)

พารามิเตอร์จะรับค่าจากการอ้างอิงตัวแปรบริบท (ระบุโดยแอตทริบิวต์ ref) หรือมี value ที่ชัดเจน

ดูตัวอย่างและข้อมูลเพิ่มเติมได้ที่โพสต์ชุมชน

ref (ไม่บังคับ)

ระบุการอ้างอิงที่ดึงค่าจากตัวแปร ตัวอย่างเช่น หากพารามิเตอร์ "uid" ต้องรับค่าจากตัวแปรที่ชื่อ "authn.uid" องค์ประกอบพารามิเตอร์จะมีลักษณะดังนี้ <Parameter name="uid" ref="authn.uid"/>

หากใช้แอตทริบิวต์นี้ อย่าใช้แอตทริบิวต์ค่า

value (ไม่บังคับ)

คุณใช้แอตทริบิวต์นี้เพื่อฮาร์ดโค้ดค่าของพารามิเตอร์ได้

หากใช้แอตทริบิวต์นี้ โปรดอย่าใช้แอตทริบิวต์ ref


หมายเหตุการใช้งาน

XSLT จะใช้งานใน.xsl ไฟล์แบบสแตนด์อโลน ซึ่งจัดเก็บไว้ในพร็อกซี API ภายใต้ /resources/xsl นโยบาย XSL จะอ้างอิงไฟล์ XSL เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ไฟล์ทรัพยากร

นโยบาย XSL ต้องมีอินพุต 2 รายการ ได้แก่

  • ชื่อของสไตล์ชีต XSLT ซึ่งมีชุดกฎการเปลี่ยนรูปแบบที่จัดเก็บไว้ใน พร็อกซี API ในส่วน /resources/xsl
  • แหล่งที่มาของ XML ที่จะแปลง (โดยปกติคือข้อความคำขอหรือการตอบกลับ)

ไม่รองรับ <xsl:include> และ <xsl:import>

Apigee Edge ใช้โปรเซสเซอร์ Saxon XSLTและรองรับ XSLT 1.0 และ 2.0


ข้อมูลอ้างอิงข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
steps.xsl.XSLSourceMessageNotAvailable 500 ข้อผิดพลาดนี้เกิดขึ้นหากข้อความหรือตัวแปรสตริงที่ระบุในองค์ประกอบ <Source> ของนโยบายการแปลง XSL อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนเฉพาะเจาะจงที่มีการใช้นโยบาย) หรือจับคู่ไม่ได้ (ไม่ได้กำหนดไว้)
steps.xsl.XSLEvaluationFailed 500 ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลด XML ของอินพุตไม่พร้อมใช้งาน/มีรูปแบบไม่ถูกต้อง หรือนโยบาย XSLTransform ล้มเหลว/เปลี่ยนรูปแบบไฟล์ XML อินพุตตามกฎการเปลี่ยนรูปแบบที่ระบุไว้ในไฟล์ XSL ไม่ได้ อาจมีสาเหตุหลายประการที่ทำให้นโยบาย XSLTransform ล้มเหลว สาเหตุที่ข้อความแสดงข้อผิดพลาดล้มเหลวจะให้ข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุ

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
XSLEmptyResourceUrl ถ้าองค์ประกอบ <ResourceURL> ในนโยบายการแปลง XSL ว่างเปล่า จะทำให้ใช้งานพร็อกซี API ไม่สำเร็จ
XSLInvalidResourceType หากประเภททรัพยากรที่ระบุในองค์ประกอบ <ResourceURL> ของนโยบายการแปลง XSL ไม่ใช่ประเภท xsl การทำให้พร็อกซี API ใช้งานได้จะไม่สำเร็จ

หัวข้อที่เกี่ยวข้อง