Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
XSLSourceMessageNotAvailable
Hata kodu
steps.xsl.XSLSourceMessageNotAvailable
Hata yanıtı gövdesi
{ "fault": { "faultstring": "response message is not available for XSL: policy_name", "detail": { "errorcode": "steps.xsl.XSLSourceMessageNotAvailable" } } }
Örnek Hata Mesajı
{
"fault": {
"faultstring": "response message is not available for XSL: xslt",
"detail": {
"errorcode": "steps.xsl.XSLSourceMessageNotAvailable"
}
}
}
Neden
Bu hata, XSL Dönüşümü politikasının <Source>
öğesinde belirtilen message veya dize değişkeni aşağıdaki durumlarda oluşur:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözümlenemiyor (tanımlanmadı)
Örneğin bu hata, XSL Dönüşümü politikasının istek akışında yürütülmesi gerekiyorsa ancak <Source>
öğesi, istek akışında bulunmayan yanıt değişkenine ayarlanırsa ortaya çıkar.
Teşhis
Hatanın oluştuğu XSL Dönüşümü politikasını ve kullanılamayan değişkenin adını belirleyin. Bu öğelerin ikisini de hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
içinde politika adıxslt
ve değişkenresponse
'dir:faultstring": "response message is not available for XSL: xslt
Başarısız XSL Dönüşümü politikası XML'inde,
<Source>
öğesinde ayarlanan değişken adının, hata dizesinde belirtilen değişken adıyla eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki XSL Dönüşümü politikası,<Source>
öğesinderesponse
adlı bir değişken belirtir ve bu değişken, hata dizesindeki değerle eşleşir:<?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>
öğesinde kullanılan değişkenin tanımlanmış olup olmadığını ve XSL Dönüşümü politikasının yürütülmekte olduğu akışta kullanılabilir olup olmadığını belirleyin.Değişken şunlardan biriyse:
- Kapsam dışında (politikanın uygulandığı belirli akışta kullanılamaz) veya
- Çözümlenemiyor (tanımlanmadı)
hatanın nedeni budur.
Örneğin, yukarıda gösterilen XSL Dönüştürme politikasının istek akışında yürütülmesi gerektiğini varsayalım. Örnek politikanın
<Source>
öğesinderesponse
değişkeninin kullanıldığını unutmayın.response
değişkeni yalnızca yanıt akışında kullanılabilir.response
değişkeni istek akışında bulunmadığı için şu hata kodunu alırsınız:steps.xsl.XSLSourceMessageNotAvailable
Çözünürlük
Başarısız XSL Dönüşümü politikasının <Source>
öğesinde ayarlanan değişkenin tanımlandığından ve politikanın uygulandığı akışta bulunduğundan emin olun.
Yukarıda gösterilen örnek XSL Dönüşümü politikasını düzeltmek için <Source>
öğesini, istek akışında mevcut olduğundan request
değişkenini kullanacak şekilde değiştirebilirsiniz:
<?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
Hata kodu
steps.xsl.XSLEvaluationFailed
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Evaluation of XSL <var>XSL_file_name</var> failed with reason: \"<var>reason_for_failure</var>",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Örnek Hata Mesajı
{
"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"
}
}
}
Olası nedenler
Bu hata aşağıdaki durumlarda oluşur:
- Giriş XML yükü kullanılamıyor/bozuk biçimlendirilmiş.
- XSLTransform politikası başarısız oluyor/XSL dosyasında sağlanan dönüştürme kurallarına göre giriş XML dosyasını dönüştüremiyor. XSLTransform politikasının başarısız olmasının birçok farklı nedeni olabilir. Hata mesajındaki hatanın nedeni, hatanın nedeni hakkında daha fazla bilgi sağlar. Aşağıdaki tabloda, bu hatanın nedenlerinden biri "Geçersiz Önek" yer almaktadır ve bir örnekle açıklamaktadır.
Neden | Açıklama |
---|---|
Giriş XML yükü kullanılamıyor | Girilen XML yükü geçilmedi veya boş. |
Yanlış Biçimlendirilmiş Giriş XML'i | Girilen XML yükü hatalı veya geçersiz. |
Geçersiz ön ek | Girilen XML yükü, XSL dosyasında tanımlanmayan bir ön eke sahip. |
Neden: Girilen XML yükü kullanılamıyor
Bu hata, girilen XML yükü iletilmezse veya XSLTransform politikasına sahip API Proxy'sine API isteğinin bir parçası olarak iletilen XML yükü boşsa ortaya çıkar.
Örnek Hata Mesajı
{
"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"
}
}
}
Teşhis
XML Dönüşümü politikası tarafından değerlendirilemeyen XSL dosyasını ve hatanın nedenini belirleyin. Giriş XML yükü iletilmezse veya boş bırakılırsa hatanın nedeni ayrıştırma sırasında belgenin erken sona erdiği anlamına gelir. Tüm bu bilgileri, hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
öğesinde XSL dosyasıXSL-Transform.xsl
, hatanın nedeni isePremature end of document while parsing at line 1 (possibly around char 0)
. Bu hata, XML yükünün ya iletilmediği ya da boş olduğu anlamına gelir."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
İsteğin parçası olarak iletilen giriş XML yükünün boş olup olmadığını belirleyin. Giriş yükü iletilmezse veya boş bırakılırsa hatanın nedeni budur.
Aşağıdaki örnek istekte, kullanıcı tarafından gönderilen istek yükü (yani istek gövdesi) boştu.
Örneğin:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml"
XML giriş yükü boş olduğundan şu hatayı alırsınız:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Premature end of document while parsing at line 1(possibly around char 0)\""
Çözünürlük
XSLTransform politikasına iletilen girişin geçerli bir XML yükü olduğundan ve boş olmadığından emin olun.
Örnek XSLTransform politikasıyla ilgili sorunu düzeltmek için geçerli bir XML yükü iletin. Örneğin:
Şu içeriğe sahip
city.xml
adında bir dosya oluşturun:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Aşağıdaki gibi bir cURL komutu kullanarak API çağrısını yapın:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Neden: Hatalı Giriş XML'i
API isteğinin bir parçası olarak XSLTransform politikasına iletilen XML yükü hatalı veya geçersiz.
Örnek Hata Mesajı
{
"fault": {
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\"",
"detail": {
"errorcode": "steps.xsl.XSLEvaluationFailed"
}
}
}
Teşhis
XML Dönüştürme politikası tarafından değerlendirilemeyen XSL dosyasını ve hatanın nedenini belirleyin. Girilen XML yükü hatalıysa hata nedeni beklenmeyen bir karakter olduğunu gösterir. Tüm bu bilgileri, hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
öğesinde XSL dosyasıXSL-Transform.xsl
, hatanın nedeni iseUnexpected char while looking for open tag ('<') character
. Yani XML yükünde "<
" eksik."faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
XSLTransform politikasına iletilen giriş XML yükünü inceleyin ve geçerli XML içeriğine sahip olup olmadığına bakın. Giriş yükü geçerli XML değilse hatanın nedeni budur.
Aşağıdaki örnek istekte, kullanıcı tarafından gönderilen giriş yükü (yani istek gövdesi) geçersizdi.
Örneğin:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Burada
city.xml
:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Giriş yükü JSON olduğundan ve geçerli XML olmadığından şu hatayı alırsınız:
"faultstring": "Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unexpected char while looking for open tag ('<') character\""
Çözünürlük
XSLTransform politikasına iletilen girişin geçerli bir XML yükü olduğundan ve boş olmadığından emin olun.
Örnek XSLTransform politikasıyla ilgili sorunu düzeltmek için geçerli bir XML yükü iletin. Örneğin:
city.xml
dosyasını, içeriği XML biçiminde olacak şekilde aşağıda gösterildiği gibi değiştirin:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
cURL komutunu kullanarak aşağıdaki gibi API çağrısı yapın:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Neden: Geçersiz önek
XSLTransform politikasına iletilen giriş XML yükü, politikada belirtilen XSL dosyasında önek olarak tanımlanmamış bir öğeye sahip.
Örnek Hata Mesajı
{
"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"
}
}
}
Teşhis
XML Dönüştürme politikası tarafından değerlendirilemeyen XSL dosyasını ve hatanın nedenini belirleyin. Bu durumda hatanın nedeni, giriş XML yükündeki belirli bir satır numarasında çözümlenmemiş bir önek olduğunu gösterir. Tüm bu bilgileri, hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
öğesinde XSL dosyasıXSL-Transform.xsl
. Hatanın nedeniUnresolved Prefix
ve satır numarası1
."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
XSL dosyasının içeriğini (yukarıdaki 1. adımda tanımlanır) ve giriş XML yükünü inceleyin. Giriş XML yükünün satır numarasında kullanılan ön ek (yukarıdaki 1. adımda tanımlanır) XSL dosyasında yoksa hatanın nedeni budur.
Aşağıda, örnek XSL ve hataya neden olan ilgili XML yükü verilmiştir:
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>
Giriş XML Yükü
<?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>
Yukarıda gösterilen örnek XML yükü bir
<Life:Books>
öğesi içeriyor. XSL'de bu ön eke sahip olmadığına dikkat edin. Bunun yerine<xsl:text><Life></xsl:text>
önekine sahiptir. Bu nedenle şu hatayı alırsınız:"faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""
Çözünürlük
XSLTransform politikasına iletilen giriş XML yükünün, politikada kullanılan XSL dosyasında önek olarak tanımlanmış tüm öğe biçimlerini içerdiğinden emin olun.
Yukarıda gösterilen örnek XML dosyasını düzeltmek için dosyayı aşağıda gösterildiği şekilde değiştirebilirsiniz:
Güncellenen Giriş XML Yükü
<?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>