כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
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 Transform הוא אחד מהשניים:
- לא חלה על המדיניות (לא זמינה בתהליך הספציפי שבו המדיניות מיושמת)
- לא ניתן לפענח (אינו מוגדר)
לדוגמה, השגיאה הזו מתרחשת אם מדיניות XSL Transform אמורה להתבצע בתהליך הבקשה, אבל הרכיב <Source>
מוגדר כמשתנה התגובה,
שלא קיים בתהליך הבקשה.
אבחון
מזהים את מדיניות ה-XSL Transformation שבה התרחשה השגיאה, ואת שם המשתנה שאינו זמין. אפשר למצוא את שני הפריטים האלה ברכיב
faultstring
של הודעת השגיאה. לדוגמה, בשדהfaultstring
הבא, שם המדיניות הואxslt
והמשתנה הואresponse
:faultstring": "response message is not available for XSL: xslt
ב-XML של מדיניות XSL Transform שנכשלו, צריך לוודא ששם המשתנה שמוגדר ברכיב
<Source>
תואם לשם המשתנה שזוהה במחרוזת התקלה (שלב 1 למעלה). לדוגמה, מדיניות XSL Transform הבאה מציינת משתנה בשם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 Transform.אם המשתנה הוא:
- לא חלה עליהם (לא זמינה בתהליך הספציפי שבו המדיניות מופעלת) או
- לא ניתן לפענח (אינו מוגדר)
זאת הסיבה לשגיאה.
לדוגמה, נניח שמדיניות XSL Transform שלמעלה אמורה להתבצע בתהליך הבקשה. חשוב לזכור שהמשתנה
response
נמצא בשימוש ברכיב<Source>
של המדיניות לדוגמה. המשתנהresponse
זמין רק בתהליך התגובה.המשתנה
response
לא קיים בתהליך הבקשה, ולכן מופיע קוד השגיאה:steps.xsl.XSLSourceMessageNotAvailable
רזולוציה
צריך לוודא שהמשתנה שמוגדר ברכיב <Source>
במדיניות ה-XSL Transform נכשלה, מוגדר וקיים בתהליך שבו המדיניות מופעלת.
כדי לתקן את דוגמה למדיניות XSL Transform שמוצגת למעלה, אפשר לשנות את הרכיב <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"
}
}
}
גורמים אפשריים
השגיאה הזו מתרחשת אם:
- המטען הייעודי (payload) של ה-XML שהוזן לא זמין או שפורמטו שגוי.
- מדיניות ה-XSLTransform נכשלת או לא יכולה להמיר את קובץ ה-XML של הקלט, בהתאם לכללי הטרנספורמציה שצוינו בקובץ ה-XSL. יכולות להיות הרבה סיבות שונות לכישלון של מדיניות XSLTransform. תוכלו למצוא מידע נוסף על הסיבה לכשל בהודעת השגיאה. בטבלה הבאה מופיעה אחת הסיבות האפשריות לכשל הזה – 'תחילית לא חוקית', והיא מוסברת בדוגמה.
סיבה | תיאור |
---|---|
מטען ייעודי של XML לא זמין | המטען הייעודי (payload) של קלט ה-XML לא הועבר או שהוא ריק. |
קובץ XML של קלט בפורמט שגוי | המטען הייעודי (payload) של הקלט בפורמט XML שגוי או לא חוקי. |
תחילית לא תקינה | למטען הייעודי (payload) של ה-XML שבקלט יש תחילית שלא מוגדרת בקובץ ה-XSL. |
הסיבה: המטען הייעודי (payload) של קלט XML לא זמין
השגיאה הזו מתרחשת אם המטען הייעודי (payload) של ה-XML שהוזן לא מועבר, או אם המטען הייעודי של ה-XML מועבר כחלק מבקשת ה-API לשרת ה-API של ה-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 Transform, ואת הסיבה לכשל. אם המטען הייעודי של ה-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)\""
צריך לקבוע אם המטען הייעודי (payload) ב-XML של הקלט שהועבר כחלק מהבקשה של ריק. אם המטען הייעודי של הקלט לא הועבר או שהוא ריק, זו הסיבה לשגיאה.
בבקשה לדוגמה שלמטה, המטען הייעודי (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 לדוגמה, יש להעביר מטען ייעודי (payload) חוקי ב-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 שגוי
המטען הייעודי (payload) ב-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 Transform ואת הסיבה לכשל. אם המטען הייעודי (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 חוקי. אם המטען הייעודי של הקלט הוא לא 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 הוא מטען ייעודי (payload) חוקי ב-XML, ושאינו ריק.
כדי לפתור את הבעיה במדיניות XSLTransform לדוגמה, יש להעביר מטען ייעודי (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 Transform ואת הסיבה לכשל. במקרה כזה, הסיבה לכשל מציינת שיש קידומת לא מפוענחת במספר שורה ספציפי במטען הייעודי (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 למעלה) ואת המטען הייעודי (payload) של 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>
המטען הייעודי של ה-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)\""
רזולוציה
חשוב לוודא שהמטען הייעודי (payload) של ה-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>