אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X. info
XSLSourceMessageNotAvailable
קוד שגיאה
steps.xsl.XSLSourceMessageNotAvailable
גוף התשובה לשגיאה
{ "fault": { "faultstring": "response message is not available for XSL:policy_name ", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
סיבה
השגיאה הזו מתקבלת אם
message
או משתנה המחרוזת שצוין ברכיב <Source>
של מדיניות טרנספורמציה של XSL הוא:
- מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מתבצעת)
- לא ניתן לפתרון (לא מוגדר)
לדוגמה, השגיאה הזו מתרחשת אם המדיניות של טרנספורמציה של XSL אמורה להתבצע.
בתהליך הבקשה, אבל הרכיב <Source>
מוגדר למשתנה התגובה,
שלא קיימים בתהליך הבקשה.
אבחון
פרטו את המדיניות לטרנספורמציה של XSL שבה אירעה השגיאה, והשם שלה של המשתנה שלא זמין. אפשר למצוא את שני הפריטים האלה רכיב
faultstring
של תגובת השגיאה. לדוגמה, ב-faultstring
הבא, שם המדיניות הואxslt
והמשתנה הואresponse
:faultstring": "response message is not available for XSL: xslt
בקובץ ה-XML של מדיניות הטרנספורמציה של XSL שנכשלה, מוודאים ששם המשתנה שמוגדר ברכיב
<Source>
תואם לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, מדיניות הטרנספורמציה הבאה של XSL מציינת משתנה בשםresponse
ברכיב<Source>
, שמתאים למה שמופיע במחרוזת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XSL async="false" continueOnError="false" enabled="true" name="xslt"> <DisplayName>xslt</DisplayName> <Properties/> <ResourceURL>xsl://XSL-Transform.xsl</ResourceURL> <Source>response</Source> <Parameters ignoreUnresolvedVariables="false"/> <OutputVariable/> </XSL>
בודקים אם המשתנה שמשמש ברכיב
<Source>
מוגדר וזמין בתהליך שבו המדיניות של טרנספורמציית XSL מופעלת.אם המשתנה הוא:
- לא חלה על המדיניות (לא זמינה בתהליך הספציפי שבו המדיניות) לביצוע) או
- לא ניתן לפתרון (לא מוגדר)
זה הגורם לשגיאה.
לדוגמה, נניח שמדיניות הטרנספורמציה של XSL שמוצגת למעלה אמורה מופעל בתהליך הבקשה. חשוב לזכור שמשתנה
response
משמש ברכיב<Source>
של מדיניות הדוגמה. המשתנהresponse
הוא זמינה רק בתהליך התשובה.מכיוון שהמשתנה
response
לא קיים בתהליך הבקשה, מתקבל קוד השגיאה:steps.xsl.XSLSourceMessageNotAvailable
רזולוציה
יש לוודא שהמשתנה מוגדר ברכיב <Source>
של טרנספורמציית ה-XSL שנכשלה
מוגדרת וקיימת בתהליך שבו המדיניות מופעלת.
כדי לתקן את המדיניות לדוגמה של טרנספורמציה של XSL שמוצגת למעלה, אפשר לשנות את
רכיב <Source>
לשימוש במשתנה request
, כי הוא קיים בבקשה
זרימה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XSL async="false" continueOnError="false" enabled="true" name="xslt">
<DisplayName>xslt</DisplayName>
<Properties/>
<ResourceURL>xsl://XSL-Transform.xsl</ResourceURL>
<Source>request</Source>
<Parameters ignoreUnresolvedVariables="false"/>
<OutputVariable/>
</XSL>
XSLEvaluationFailed
קוד שגיאה
steps.xsl.XSLEvaluationFailed
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
גורמים אפשריים
השגיאה הזו מתרחשת אם:
- עומס העבודה של ה-XML בקלט לא זמין או לא תקין.
- מדיניות XSLTransform נכשלה או לא יכולה לבצע טרנספורמציה של קובץ ה-XML להזנת הקלט על סמך כללי הטרנספורמציה שסופקו בקובץ ה-XSL. יכולות להיות הרבה סיבות לכך שמדיניות XSLTransform תיכשל. הסיבה לכשל בהודעת השגיאה תקבלו מידע נוסף על הסיבה. הבאים הטבלה מפרטת את הסיבה לכשל הזה – קידומת לא חוקית, ומוסבר עליה עם דוגמה.
סיבה | תיאור |
---|---|
Input XML Payload unavailable | עומס העבודה של ה-XML בקלט לא מועבר או שהוא ריק. |
קובץ XML לקלט בעל מבנה שגוי | עומס העבודה של ה-XML שהוזן לא תקין או שהפורמט שלו שגוי. |
תחילית לא תקינה | למטען הייעודי (payload) של XML יש קידומת שלא מוגדרת בקובץ ה-XSL. |
סיבה: נתוני העומס של קלט ה-XML לא זמינים
השגיאה הזו מתרחשת אם לא מועברת עומס העבודה של ה-XML של הקלט, או אם עומס העבודה של ה-XML שהועברו כחלק מבקשת ה-API לשרת proxy של ה-API עם מדיניות XSLTransform ריק.
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
אבחון
מזהים את קובץ ה-XSL שלא ניתן היה להעריך באמצעות מדיניות הטרנספורמציה של ה-XML ואת הסיבה לכישלון. אם עומס העבודה של ה-XML של הקלט לא מועבר או שהוא ריק, הסיבה לכישלון תצביע על סיום מוקדם של המסמך במהלך הניתוח. כל המידע הזה מופיע ברכיב
faultstring
בתגובת השגיאה. לדוגמה, בfaultstring
הבא, קובץ ה-XSL הואXSL-Transform.xsl
, והסיבה לכשל היאPremature end of document while parsing at line 1 (possibly around char 0)
. משמעות השגיאה הזו שהמטען הייעודי (payload) של ה-XML לא מועבר או שהוא ריק."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
בודקים אם עומס העבודה של ה-XML שהתקבל כחלק מהבקשה ריק. אם המטען הייעודי (Payload) של הקלט לא מועבר או ריק, זו הסיבה לשגיאה.
בבקשה לדוגמה שבהמשך, המטען הייעודי (payload) של הבקשה (כלומר, גוף הבקשה) שנשלח על ידי המשתמש, הייתה ריקה.
לדוגמה:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
מכיוון שהמטען הייעודי (payload) של קלט ה-XML ריק, תתקבל השגיאה:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
רזולוציה
יש לוודא שהקלט שמועבר למדיניות XSLTransform הוא מטען ייעודי (payload) חוקי של XML וכן ריק.
כדי לפתור את הבעיה במדיניות לדוגמה של XSLTransform, צריך להעביר עומס נתונים חוקי של XML. לדוגמה:
יוצרים קובץ בשם
city.xml
עם התוכן הבא:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
מבצעים את הקריאה ל-API באמצעות פקודת cURL באופן הבא:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
הסיבה: פורמט XML של הקלט שגוי
עומס העבודה של קלט ה-XML שהוענק כחלק מבקשת ה-API למדיניות XSLTransform הוא בפורמט שגוי או לא תקין.
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
אבחון
מזהים את קובץ ה-XSL שלא ניתן היה להעריך באמצעות מדיניות הטרנספורמציה של ה-XML, ואת הסיבה לכישלון. אם המטען הייעודי (payload) של הקלט בפורמט XML שגוי, הסיבה לכך יציין שיש תו לא צפוי. כל המידע הזה מידע ברכיב
faultstring
של תגובת השגיאה. לדוגמה, בקובץfaultstring
הבא, קובץ ה-XSL הואXSL-Transform.xsl
והסיבה לכישלון היאUnexpected char while looking for open tag ('<') character
. כלומר, '<
' חסר במטען הייעודי (payload) של ה-XML."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
לבדוק את המטען הייעודי (payload) של הקלט מסוג XML שמועבר למדיניות XSLTransform ולראות אם הוא מכיל תוכן XML חוקי או לא. אם המטען הייעודי (payload) של הקלט אינו XML חוקי, כלומר את הסיבה לשגיאה.
בבקשה לדוגמה שלמטה, המטען הייעודי (payload) שהוזן (כלומר, גוף הבקשה) שנשלח על ידי המשתמש.
לדוגמה:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
כאשר
city.xml
הוא:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
מכיוון שהמטען הייעודי (Payload) של הקלט הוא JSON ולא XML חוקי, תקבלו את השגיאה:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
רזולוציה
מוודאים שהקלט שמוענק למדיניות XSLTransform הוא עומס עבודה תקין של XML ולא ריק.
כדי לפתור את הבעיה במדיניות XSLטרנספורמציה לדוגמה, צריך להעביר מטען ייעודי (payload) חוקי של XML. לדוגמה:
משנים את הקובץ
city.xml
כך שהתוכן יהיה בפורמט XML, כפי שמתואר בהמשך:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
מבצעים את הקריאה ל-API באמצעות פקודת cURL באופן הבא:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
הסיבה: קידומת לא חוקית
המטען הייעודי (payload) של הקלט ב-XML שמועבר למדיניות XSLTransform כולל רכיב שאינו מוגדרת כקידומת בקובץ ה-XSL שצוין במדיניות.
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
אבחון
זיהוי קובץ ה-XSL שלא ניתן היה להעריך באמצעות מדיניות טרנספורמציה של XML ואת הסיבה לכשל. במקרה כזה, הסיבה לכישלון תצביע על כך שיש תחילית שלא טופלה במספר שורה ספציפי בתוכן הייעודי (payload) של ה-XML להזנה. אפשר למצוא את כל המידע הזה ברכיב
faultstring
של עם שגיאה. לדוגמה, בקובץfaultstring
הבא, קובץ ה-XSL הואXSL-Transform.xsl
, הסיבה לכישלון היאUnresolved Prefix
ומספר השורה הוא1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
בודקים את התוכן של קובץ ה-XSL (שזוהה בשלב 1 שלמעלה) ואת עומס העבודה של קלט ה-XML. אם הקידומת שצוינה במספר השורה (זוהתה בשלב 1 למעלה) של המטען הייעודי (payload) של הקלט ב-XML לא קיים בקובץ ה-XSL, אז זו הסיבה לשגיאה.
לפניכם קוד ה-XSL לדוגמה והמטען הייעודי (payload) של ה-XML התואם שהובילו לשגיאה:
XSL-Transform.xsl <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>
קטע ה-payload של קלט ה-XML
<?xml version="1.0"?> <Life:Books> <title>A few of my favorite albums</title> <listitem>Beat Crazy</listitem> <listitem>Here Come the Warm Jets</listitem> <listitem>Kind of Blue</listitem> <listitem>London Calling</listitem> </Life:Books>
מטען הייעודי (payload) לדוגמה ב-XML שמוצג למעלה מכיל את הרכיב
<Life:Books>
. שימו לב שלקובץ ה-XSL אין את הקידומת הזו. במקום זאת, התחילית שלו היא<xsl:text><Life></xsl:text>
. לכן מקבלים את השגיאה:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
רזולוציה
חשוב לוודא שלמטע הטעינה של ה-XML שהועברו למדיניות XSLTransform יש את כל פורמטים הרכיבים שמוגדרים כתחיליות בקובץ ה-XSL שמשמש במדיניות.
כדי לתקן את קובץ ה-XML לדוגמה שמוצג למעלה, אפשר לשנות את הקובץ באופן הבא:
עדכון של נתוני ה-payload בקובץ ה-XML של הקלט
<?xml version="1.0"?>
<Life>
<title>A few of my favorite albums</title>
<listitem>Beat Crazy</listitem>
<listitem>Here Come the Warm Jets</listitem>
<listitem>Kind of Blue</listitem>
<listitem>London Calling</listitem>
</Life>