คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
อะไร
นโยบายการเปลี่ยนรูปแบบ 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><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>
สไตล์ชีต 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 โดยใช้องค์ประกอบต่อไปนี้
ชื่อช่อง | คำอธิบาย | |||
---|---|---|---|---|
ชื่อ (Mandatory) |
ชื่อนโยบาย จำกัดอักขระที่ใช้ในชื่อได้ดังต่อไปนี้
A-Z0-9._\-$ % แต่ UI การจัดการจะบังคับใช้ข้อจํากัดเพิ่มเติม เช่น นําอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ
|
|||
แหล่งที่มา (ไม่บังคับ) |
ประกอบด้วยข้อความที่ต้องการดึงข้อมูล โดยปกติแล้วค่านี้จะเป็น request หรือ response ขึ้นอยู่กับว่าข้อความที่เปลี่ยนรูปแบบเป็นข้อความขาเข้าหรือขาออก
|
|||
ตัวแปรเอาต์พุต (ไม่บังคับ) |
ตัวแปรที่จัดเก็บเอาต์พุตของการเปลี่ยนรูปแบบ ExportVariable ต้องไม่เป็นประเภทข้อความ กล่าวคือ ไม่สามารถเป็น "message", "request" หรือ "response" คุณควรตั้งค่าองค์ประกอบนี้เป็นตัวแปรที่กำหนดเอง แล้วใช้ตัวแปรนั้น หากต้องการแทนที่เนื้อหาข้อความด้วยเอาต์พุตของการเปลี่ยนรูปแบบ ให้ลบองค์ประกอบนี้ เช่น หากกำลังเปลี่ยนรูปแบบข้อความเป็น HTML ก็ไม่ต้องใส่องค์ประกอบนี้ |
|||
ResourceURL (Mandatory) | ไฟล์ XSLT ที่จะใช้ในการแปลงข้อความ | |||
พารามิเตอร์ (ไม่บังคับ) | ละเว้นตัวแปร (ไม่บังคับ) |
ไม่คำนึงถึงข้อผิดพลาดของตัวแปรที่ยังไม่ได้รับการแก้ไขในคำแนะนำสคริปต์ XSLT
ค่าที่ถูกต้อง: true/false
ค่าเริ่มต้น: false
|
||
พารามิเตอร์ (ไม่บังคับ) | ชื่อ (Mandatory) |
พารามิเตอร์รองรับการใช้พารามิเตอร์ XSL ในสไตล์ชีตของคุณ ซึ่งชื่อที่คุณเพิ่มที่นี่ในนโยบายคือชื่อของพารามิเตอร์ XSL เช่น หากคุณป้อนชื่อ "uid" XSL อาจมีลักษณะประมาณนี้ พารามิเตอร์นี้ได้รับค่าจากการอ้างอิงไปยังตัวแปรบริบท (ระบุโดยแอตทริบิวต์ ดูตัวอย่างและข้อมูลเพิ่มเติมได้ที่ http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864 |
||
ref (ไม่บังคับ) |
ระบุการอ้างอิงที่เป็นแหล่งที่มาของค่าจากตัวแปร เช่น หากพารามิเตอร์ "uid" ต้องการค่าจากตัวแปรชื่อ "authn.uid" องค์ประกอบพารามิเตอร์จะมีลักษณะดังนี้ หากใช้แอตทริบิวต์นี้ โปรดอย่าใช้แอตทริบิวต์ค่า |
|||
ค่า (ไม่บังคับ) |
คุณใช้แอตทริบิวต์นี้เพื่อฮาร์ดโค้ดค่าของพารามิเตอร์ได้ หากใช้แอตทริบิวต์นี้ โปรดอย่าใช้แอตทริบิวต์ ref |
หมายเหตุการใช้งาน
ระบบจะใช้งาน XSLT ในไฟล์ .xsl
แบบสแตนด์อะโลน ซึ่งจัดเก็บไว้ในพร็อกซี API ภายใต้ /resources/xsl
นโยบาย XSL อ้างอิงเฉพาะไฟล์ XSL เท่านั้น ดูไฟล์แหล่งข้อมูลสำหรับข้อมูลเพิ่มเติม
นโยบาย XSL กำหนดให้ป้อนข้อมูล 2 แบบ ดังนี้
- ชื่อของสไตล์ชีต XSLT ซึ่งมีชุดกฎการเปลี่ยนรูปแบบ) ที่จัดเก็บไว้ในพร็อกซี API ภายใต้
/resources/xsl
- แหล่งที่มาของ XML ที่จะเปลี่ยนรูปแบบ (โดยปกติจะเป็นคำขอหรือข้อความตอบกลับ)
ไม่รองรับ <xsl:include>
และ <xsl:import>
Apigee Edge ใช้ตัวประมวลผล SMTP ของ Saxon และรองรับ XSLT 1.0 และ 2.0
การอ้างอิงข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากข้อความหรือตัวแปรสตริงที่ระบุในองค์ประกอบ <Source> ของนโยบายการแปลง XSL อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนเฉพาะเจาะจงที่มีการใช้นโยบาย) หรือจับคู่ไม่ได้ (ไม่ได้กำหนดไว้)
|
build |
steps.xsl.XSLEvaluationFailed |
500 | ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลด XML ของอินพุตไม่พร้อมใช้งาน/มีรูปแบบไม่ถูกต้อง หรือนโยบาย XSLTransform ล้มเหลว/เปลี่ยนรูปแบบไฟล์ XML อินพุตตามกฎการเปลี่ยนรูปแบบที่ระบุไว้ในไฟล์ XSL ไม่ได้ อาจมีสาเหตุหลายประการที่ทำให้นโยบาย XSLTransform ล้มเหลว สาเหตุที่ข้อความแสดงข้อผิดพลาดล้มเหลวจะให้ข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุ | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
XSLEmptyResourceUrl |
ถ้าองค์ประกอบ <ResourceURL> ในนโยบายการแปลง XSL ว่างเปล่า จะทำให้ใช้งานพร็อกซี API ไม่สำเร็จ |
build |
XSLInvalidResourceType |
หากประเภททรัพยากรที่ระบุในองค์ประกอบ <ResourceURL> ของนโยบายการแปลง XSL ไม่ใช่ประเภท xsl การทำให้พร็อกซี API ใช้งานได้จะไม่สำเร็จ |
build |