הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
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> של מדיניות XSLTransform הוא אחד מהבאים:
- לא כלול (לא זמין בתהליך הספציפי שבו המדיניות מופעלת)
- אי אפשר לפתור (לא מוגדר)
לדוגמה, השגיאה הזו מתרחשת אם מדיניות XSLTransform אמורה לפעול בתהליך הבקשה, אבל הרכיב <Source> מוגדר למשתנה התגובה, שלא קיים בתהליך הבקשה.
אבחון
מזהים את מדיניות XSLTransform שבה אירעה השגיאה ואת שם המשתנה שלא זמין. אפשר למצוא את שני הפריטים האלה ברכיב
faultstringשל תגובת השגיאה. לדוגמה, בקטע הבאfaultstring, שם המדיניות הואxsltוהמשתנה הואresponse:faultstring": "response message is not available for XSL: xsltב-XML של מדיניות XSLTransform שנכשלה, מוודאים שהשם של המשתנה שהוגדר ברכיב
<Source>זהה לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות XSLTransform הבאה מוגדר משתנה בשם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>מוגדר וזמין בתהליך שבו מופעלת מדיניות XSLTransform.אם המשתנה הוא:
- לא רלוונטי (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
- אי אפשר לפתור (לא מוגדר)
אז זה הגורם לשגיאה.
לדוגמה, נניח שמדיניות XSLTransform שמוצגת למעלה אמורה לפעול בתהליך הבקשה. נזכיר שהמשתנה
responseמשמש ברכיב<Source>של מדיניות הדוגמה. המשתנהresponseזמין רק בתהליך התשובה.מכיוון שהמשתנה
responseלא קיים בתהליך הבקשה, מקבלים את קוד השגיאה:steps.xsl.XSLSourceMessageNotAvailable
רזולוציה
חשוב לוודא שהמשתנה שהוגדר ברכיב <Source> של מדיניות XSLTransform שנכשלה מוגדר וקיים בתהליך שבו המדיניות מופעלת.
כדי לתקן את מדיניות XSLTransform שמוצגת בדוגמה שלמעלה, אפשר לשנות את הרכיב <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 נכשלת. הסיבה לכישלון בהודעת השגיאה תספק מידע נוסף על הגורם. בטבלה הבאה מפורטת אחת מהסיבות האפשריות לכישלון הזה – קידומת לא תקינה – ומוסברות באמצעות דוגמה.
| מטרה | תיאור |
|---|---|
| מטען ה-XML של הקלט לא זמין | מטען ה-XML לא הועבר או שהוא ריק. |
| קובץ XML עם קלט פגום | מטען ה-XML שהוזן לא תקין או שהפורמט שלו שגוי. |
| תחילית לא תקינה | למטען הייעודי (payload) של קלט ה-XML יש קידומת שלא מוגדרת בקובץ ה-XSL. |
הסיבה: מטען ה-XML של הקלט לא זמין
השגיאה הזו מתרחשת אם מטען ה-XML של הקלט לא מועבר או אם מטען ה-XML שמועבר כחלק מבקשת ה-API ל-API Proxy עם מדיניות 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). השגיאה הזו מציינת שמטען ה-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) של הקלט לא מועבר או שהוא ריק, זו הסיבה לשגיאה.
בדוגמה של הבקשה שמופיעה בהמשך, מטען הבקשה (כלומר, גוף הבקשה) שנשלח על ידי המשתמש היה ריק.
לדוגמה:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml"
כאשר your_host_alias הוא דומיין שפונה לציבור ומשמש לגישה לממשקי ה-API, כפי שהוגדר במאפיין
virtualhosts.hostAliasesבקובץ ההחלפות. איך מציינים שינויים בהגדרותמכיוון שהמטען הייעודי (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://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
כאשר your_host_alias הוא דומיין שפונה לציבור ומשמש לגישה לממשקי ה-API, כפי שהוגדר במאפיין
virtualhosts.hostAliasesבקובץ ההחלפות. איך מציינים שינויים בהגדרות
הגורם: קלט 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 Transform ואת הסיבה לכשל. אם מטען ה-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\""בודקים את מטען ה-XML של הקלט שעבר למדיניות XSLTransform כדי לראות אם הוא מכיל תוכן XML תקין. אם מטען הייעוד של הקלט הוא לא XML תקין, זו הסיבה לשגיאה.
בדוגמה של הבקשה שמופיעה בהמשך, מטען הייעודי (payload) של הקלט (כלומר, גוף הבקשה) שנשלח על ידי המשתמש היה לא תקין.
לדוגמה:
curl -v "http://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
כאשר your_host_alias הוא דומיין שפונה לציבור ומשמש לגישה לממשקי ה-API, כפי שהוגדר במאפיין
virtualhosts.hostAliasesבקובץ ההחלפות. איך מציינים שינויים בהגדרותבדוגמה הזו,
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://your_host_alias/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
כאשר your_host_alias הוא דומיין שפונה לציבור ומשמש לגישה לממשקי ה-API, כפי שהוגדר במאפיין
virtualhosts.hostAliasesבקובץ ההחלפות. איך מציינים שינויים בהגדרות
הסיבה: קידומת לא תקינה
מטען ה-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 ואת הסיבה לכשל. במקרה כזה, הסיבה לכישלון תציין שיש קידומת לא פתורה במספר שורה ספציפי במטען ה-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 למעלה) של מטען ה-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 הייעודי (payload) שמוצג למעלה מכיל את הרכיב
<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>