คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
อะไร
นโยบาย XSL Transform จะใช้การแปลงภาษาชีตสไตล์แบบขยายได้ (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 Transformation โดยใช้องค์ประกอบต่อไปนี้
| ชื่อช่อง | คำอธิบาย | |||
|---|---|---|---|---|
| ชื่อ (บังคับ) |
ชื่อนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดอยู่ที่:
A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการจะบังคับใช้ข้อจำกัดเพิ่มเติม
เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ
|
|||
| แหล่งที่มา (ไม่บังคับ) |
มีข้อความที่ต้องดึงข้อมูล โดยปกติแล้วค่านี้จะ
ตั้งค่าเป็น request หรือ response ทั้งนี้ขึ้นอยู่กับว่าข้อความที่จะ
แปลงเป็นขาเข้าหรือขาออก
|
|||
| OutputVariable (ไม่บังคับ) |
ตัวแปรที่จัดเก็บเอาต์พุตของการแปลง OutputVariable ต้องไม่ใช่ประเภทข้อความ นั่นคือ ต้องไม่ใช่ "message", "request" หรือ "response" คุณควร ตั้งค่าองค์ประกอบนี้ให้เป็นตัวแปรที่กำหนดเอง แล้วใช้ตัวแปรนั้น หากต้องการแทนที่เนื้อหาข้อความด้วยเอาต์พุตของการแปลง ให้ลบ องค์ประกอบนี้ออก เช่น หากคุณกำลังแปลงข้อความเป็น HTML ก็ไม่ควรใส่องค์ประกอบนี้ |
|||
| ResourceURL (บังคับ) | ไฟล์ XSLT ที่จะใช้ในการแปลงข้อความ | |||
| พารามิเตอร์ (ไม่บังคับ) | ignoreUnresolvedVariables (ไม่บังคับ) |
ละเว้นข้อผิดพลาดของตัวแปรที่แก้ไม่ได้ในคำแนะนำสคริปต์ XSLT
ค่าที่ใช้ได้: true/false
ค่าเริ่มต้น: false
|
||
| พารามิเตอร์ (ไม่บังคับ) | name (บังคับ) |
พารามิเตอร์รองรับการใช้ XSL param ในชีตสไตล์ โดยชื่อที่คุณเพิ่ม
ที่นี่ในนโยบายจะเป็นชื่อของ XSL param เช่น หากคุณป้อนชื่อ
"uid", XSL อาจมีลักษณะดังนี้ พารามิเตอร์จะได้รับค่าจากการอ้างอิงตัวแปรบริบท (ระบุโดย
แอตทริบิวต์ ดูตัวอย่างและข้อมูลเพิ่มเติมได้ที่โพสต์ในชุมชน |
||
| ref (ไม่บังคับ) |
ระบุข้อมูลอ้างอิงที่ดึงค่าจากตัวแปร เช่น หากพารามิเตอร์ "uid" ต้องได้รับค่าจากตัวแปรที่ชื่อ "authn.uid" องค์ประกอบ Parameter จะมีลักษณะดังนี้ หากคุณใช้แอตทริบิวต์นี้ ก็ไม่ควรใช้แอตทริบิวต์ value |
|||
| 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 อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนเฉพาะเจาะจงที่มีการใช้นโยบาย) หรือจับคู่ไม่ได้ (ไม่ได้กำหนดไว้)
|
build |
steps.xsl.XSLEvaluationFailed |
500 | ข้อผิดพลาดนี้เกิดขึ้นหากเพย์โหลด XML ของอินพุตไม่พร้อมใช้งาน/มีรูปแบบไม่ถูกต้อง หรือนโยบาย XSLTransform ล้มเหลว/เปลี่ยนรูปแบบไฟล์ XML อินพุตตามกฎการเปลี่ยนรูปแบบที่ระบุไว้ในไฟล์ XSL ไม่ได้ อาจมีสาเหตุหลายประการที่ทำให้นโยบาย XSLTransform ล้มเหลว สาเหตุที่ข้อความแสดงข้อผิดพลาดล้มเหลวจะให้ข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุ | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
XSLEmptyResourceUrl |
ถ้าองค์ประกอบ <ResourceURL> ในนโยบายการแปลง XSL ว่างเปล่า จะทำให้ใช้งานพร็อกซี API ไม่สำเร็จ |
build |
XSLInvalidResourceType |
หากประเภททรัพยากรที่ระบุในองค์ประกอบ <ResourceURL> ของนโยบายการแปลง XSL ไม่ใช่ประเภท xsl การทำให้พร็อกซี API ใช้งานได้จะไม่สำเร็จ |
build |