מדיניות 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 פשוטה. עבור לדוגמה הבאה כדי לראות את גיליון הסגנון של ה-XSX שאליו קיימת הפניה המדיניות (my_transform.xsl). הרכיב <Source> חשוב. לדוגמה, אם ה-XML שרוצים לשנות נמצא בתגובה, הטרנספורמציה לא יתרחשו אלא אם תגדירו את המקור כ-response (והמדיניות מצורפת אל ). אבל במקרה הזה, ה-XML המיועד לטרנספורמציה נמצא בבקשה.

גיליון סגנונות של XLSX ->

<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._\-$ % אבל ממשק המשתמש לניהול אוכף הגבלות נוספות, לדוגמה, הסרה אוטומטית של תווים שהם לא אלפאנומריים.
מקור (אופציונלי) מכיל את ההודעה שממנה יש לחלץ את המידע. בדרך כלל הערך הזה הוא ל-request או ל-response, תלוי אם ההודעה אמורים לקבל טרנספורמציה נכנסת או יוצאת.
  • אם חסר מקור, המערכת תתייחס אליו כאל הודעה פשוטה. לדוגמה, <Source>הודעה</Source>
  • אם לא ניתן לפענח את משתנה המקור או אם משתנה לסוג שאינו הודעה, הערך של הפרמטר נכשל בטרנספורמציה.
OutputVariable (משתנה פלט) (אופציונלי)

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

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

ResourceURL (חובה) קובץ ה-XSLT שישמש להמרת ההודעה.
פרמטרים (אופציונלי) התעלמות מ-UnresolvedVariables (אופציונלי)
המערכת מתעלמת משגיאות במשתנים שלא נפתרו בהוראות של סקריפט XLS.
הערכים התקפים: true/false
ערך ברירת המחדל: false
פרמטר (אופציונלי) name (חובה)

פרמטרים תומכים בשימוש בפרמטר 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"/>

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

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

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

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


הערות שימוש

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

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

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

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

Apigee Edge מסתמך על Saxon XL , ותומך ב-XLS 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 תיכשל.

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