นโยบาย XSLTransform

คุณกำลังดูเอกสารประกอบ 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>&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>
  • หากตัวแปรแหล่งที่มาไม่สามารถแก้ไข หรือแก้ไขเป็นประเภทที่ไม่ใช่ข้อความ ขั้นตอนการเปลี่ยนรูปแบบไม่สำเร็จ
ตัวแปรเอาต์พุต (ไม่บังคับ)

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

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

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

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

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

โปรดดูตัวอย่างและข้อมูลเพิ่มเติมที่ http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864

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

ระบุการอ้างอิงที่ดึงค่ามาจากตัวแปร ตัวอย่างเช่น หาก &quot;uid&quot; พารามิเตอร์จำเป็นต้องรับค่าของพารามิเตอร์จากตัวแปรที่ชื่อ "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 ePub ตัวประมวลผล และรองรับ 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 ใช้งานได้จะไม่สำเร็จ

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