אתם צופים במסמכי התיעוד של 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 ל-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 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בקובץ ההחלפות. איך מציינים שינויים בהגדרותמכיוון שמטען הנתונים של קלט ה-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 תקין, זו הסיבה לשגיאה.
בדוגמה של הבקשה שמופיעה בהמשך, מטען הייעודי לקלט (כלומר, גוף הבקשה) שנשלח על ידי המשתמש היה לא תקין.
לדוגמה:
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 ואת הסיבה לכשל. במקרה כזה, הסיבה לכישלון תציין שיש קידומת לא פתורה במספר שורה ספציפי במטען הייעודי (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 למעלה) של מטען ה-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>