คุณกำลังดูเอกสารประกอบของ 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><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 โดยใช้องค์ประกอบต่อไปนี้
| ชื่อช่อง | คำอธิบาย | |||
|---|---|---|---|---|
| ชื่อ (ต้องระบุ) |
ชื่อนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้ดังนี้
A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการจะบังคับใช้ข้อจำกัดเพิ่มเติม
เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ
|
|||
| แหล่งที่มา (ไม่บังคับ) |
มีข้อความที่ต้องดึงข้อมูล โดยปกติแล้วค่านี้จะตั้งเป็น request หรือ response ขึ้นอยู่กับว่าข้อความที่จะแปลงเป็นข้อความขาเข้าหรือขาออก
|
|||
| OutputVariable (ไม่บังคับ) |
ตัวแปรที่จัดเก็บเอาต์พุตของการเปลี่ยนรูปแบบ OutputVariable ต้องไม่ใช่ประเภทข้อความ ซึ่งก็คือต้องไม่ใช่ "message" "request" หรือ "response" คุณควร ตั้งค่าองค์ประกอบนี้ให้เป็นตัวแปรที่กำหนดเอง แล้วใช้ตัวแปรนั้น หากต้องการแทนที่เนื้อหาข้อความด้วยเอาต์พุตของการเปลี่ยนรูปแบบ ให้ลบองค์ประกอบนี้ เช่น หากคุณแปลงข้อความเป็น HTML อย่าใส่องค์ประกอบนี้ |
|||
| ResourceURL (ต้องระบุ) | ไฟล์ XSLT ที่จะใช้ในการแปลงข้อความ | |||
| พารามิเตอร์ (ไม่บังคับ) | ignoreUnresolvedVariables (ไม่บังคับ) |
ไม่สนใจข้อผิดพลาดของตัวแปรที่ยังไม่ได้รับการแก้ไขในคำสั่งสคริปต์ XSLT
ค่าที่ใช้ได้: จริง/เท็จ
ค่าเริ่มต้น: false
|
||
| พารามิเตอร์ (ไม่บังคับ) | name (ต้องระบุ) |
พารามิเตอร์รองรับการใช้พารามิเตอร์ XSL ในชีตสไตล์ โดยชื่อที่คุณเพิ่ม
ที่นี่ในนโยบายคือชื่อของพารามิเตอร์ XSL ตัวอย่างเช่น หากคุณป้อนชื่อ "uid" XSL อาจมีลักษณะดังนี้ พารามิเตอร์จะรับค่าจากการอ้างอิงตัวแปรบริบท (ระบุโดยแอตทริบิวต์ ดูตัวอย่างและข้อมูลเพิ่มเติมได้ที่โพสต์ชุมชน |
||
| ref (ไม่บังคับ) |
ระบุการอ้างอิงที่ดึงค่าจากตัวแปร ตัวอย่างเช่น หากพารามิเตอร์ "uid" ต้องรับค่าจากตัวแปรที่ชื่อ "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
ข้อมูลอ้างอิงข้อผิดพลาด
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).
|
build |
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. | build |
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. |
build |
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. |
build |