מדיניות XSLTransform

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

מה

מדיניות 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 שרוצים לשנות נמצא בתגובה, הטרנספורמציה לא תתבצע אלא אם תגדירו את Source כ-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 Transformation באמצעות הרכיבים הבאים.

שם השדה התיאור
שם (חובה) שם המדיניות. התווים שאפשר להשתמש בהם בשם מוגבלים ל: A-Z0-9._\-$ %. עם זאת, ממשק המשתמש לניהול אוכף הגבלות נוספות, כמו הסרה אוטומטית של תווים שאינם אלפאנומריים.
מקור (אופציונלי) מכיל את ההודעה שממנה יש לחלץ את המידע. בדרך כלל הערך הזה מוגדר ל-request או ל-response, בהתאם לסוג ההודעה שיש לשנות - נכנסת או יוצאת.
  • אם חסר מקור, ההתייחסות אליו היא כאל הודעה פשוטה. לדוגמה, <Source>message</Source>
  • אם לא ניתן לפענח את משתנה המקור, או שהוא מפוענח לסוג שאינו הודעה, שלב הטרנספורמציה ייכשל.
פלטVariable (אופציונלי)

משתנה ששומר את הפלט של הטרנספורמציה. הערך OutputVariable לא יכול להיות מסוג Message, כלומר הוא לא יכול להיות 'message', 'request' או 'response'. צריך להגדיר את הרכיב הזה כמשתנה מותאם אישית, ולאחר מכן לצרוך את המשתנה.

כדי להחליף את תוכן ההודעה בפלט של הטרנספורמציה, צריך למחוק את הרכיב הזה. לדוגמה, אם משנים הודעה ל-HTML, לא צריך לכלול את הרכיב הזה.

ResourceURL (חובה) קובץ ה-XSLT שישמש לשינוי ההודעה.
פרמטרים (אופציונלי) ignoreUnresolvedVariables (אופציונלי)
מתעלם משגיאות משתנים שלא נפתרו בהוראות הסקריפט של 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 (אופציונלי)

מציינת את קובץ העזר שממנו מקור הערך ממשתנה. לדוגמה, אם פרמטר "uid" צריך לקבל את הערך שלו ממשתנה שנקרא "authn.uid", הרכיב Parameter ייראה כך: <Parameter name="uid" ref="authn.uid"/>

אם משתמשים במאפיין הזה, אין צורך להשתמש בו.

ערך (אופציונלי)

תוכלו להשתמש במאפיין הזה כדי לקודד בתוך הקוד את ערך הפרמטר.

אם משתמשים במאפיין הזה, אין להשתמש במאפיין ref.


הערות על שימוש

ה-XSLT מוטמע בקובץ .xsl עצמאי, שמאוחסן ב-API proxy במסגרת /resources/xsl. מדיניות XSL רק מפנה לקובץ ה-XSL. אפשר לקרוא מידע נוסף במאמר קובצי משאבים.

למדיניות XSL נדרשים שני קלט:

  • השם של גיליון סגנונות של XSLT, שמכיל קבוצה של כללי המרה) שמאוחסן ב-API של שרת proxy במסגרת /resources/xsl
  • מקור ה-XML שיש לשנות (בדרך כלל, הודעת בקשה או הודעת תגובה)

אין תמיכה ב-<xsl:include> וב-<xsl:import>.

Apigee Edge מבוסס על מעבד Saxon XSLT ותומך ב-XSLT 1.0 ו-2.0.


הפניה לשגיאות

שגיאות בזמן ריצה

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.

קוד שגיאה סטטוס HTTP סיבה תיקון
steps.xsl.XSLSourceMessageNotAvailable 500 השגיאה הזו מתרחשת אם משתנה ההודעה או המחרוזת שצוינו ברכיב <Source> של מדיניות ה-XSL Transform הם מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או שלא ניתן לפענח אותם (לא מוגדר).
steps.xsl.XSLEvaluationFailed 500 השגיאה הזו מתרחשת אם המטען הייעודי (payload) ב-XML של הקלט אינו זמין או שפורמטו שגוי, או אם מדיניות XSLTransform נכשלת או שלא ניתן לבצע טרנספורמציה של קובץ ה-XML של הקלט בהתאם לכללי הטרנספורמציה שצוינו בקובץ ה-XSL. יכולות להיות סיבות רבות לכישלון של מדיניות XSLTransform. סיבת הכשל בהודעת השגיאה תספק מידע נוסף על הסיבה.

שגיאות בפריסה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.

שם השגיאה סיבה תיקון
XSLEmptyResourceUrl אם הרכיב <ResourceURL> במדיניות XSL Transform ריק, הפריסה של שרת ה-proxy של ה-API תיכשל.
XSLInvalidResourceType אם סוג המשאב שצוין באלמנט <ResourceURL> של מדיניות XSL Transform אינו מסוג xsl, הפריסה של שרת ה-proxy של ה-API תיכשל.

נושאים קשורים