Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
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 şunlardan biri olduğunda ortaya çıkar:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözümlenemez (tanımlanmamıştır)
Örneğin, 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 ayarlanmışsa bu hata meydana gelir.
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
'te politika adıxslt
ve değişkenresponse
'dir:faultstring": "response message is not available for XSL: xslt
Başarısız XSL Dönüştürme politikası XML'inde,
<Source>
öğesinde ayarlanan değişken adının, hata dizesinde tanımlanan 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. Bu değişken, hata dizesindekiyle 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ımlanıp tanımlanmadığını ve XSL Dönüşüm politikasının yürütüldüğü akışta kullanılıp kullanılamayacağını belirleyin.Değişken şu durumlarda:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
- Çözümlenemez (tanımlanmamıştır)
Bu durumda, hatanın nedeni budur.
Örnek olarak, yukarıda gösterilen XSL Dönüştürme politikasının istek akışında yürütülmesi gerektiğini varsayalım.
response
değişkeninin örnek politikanın<Source>
öğesinde 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ığından aşağıdaki 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, politikanın yürütüldüğü akışta tanımlandığından ve bulunduğundan emin olun.
Yukarıda gösterilen örnek XSL Dönüşüm politikasını düzeltmek için <Source>
öğesini, istek akışında bulunduğu için 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.
- XSLTransform politikası, XSL dosyasında sağlanan dönüştürme kurallarına göre giriş XML dosyasını dönüştüremez. 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 nedeni olan Geçersiz Önek listelenmekte olup bir örnekle açıklanmıştır.
Neden | Açıklama |
---|---|
Giriş XML yükü kullanılamıyor | Giriş XML yükü iletilmiyor veya boş. |
Yanlış biçimlendirilmiş giriş XML'i | Giriş XML yükü bozuk veya geçersiz. |
Geçersiz ön ek | Giriş XML yükü, XSL dosyasında tanımlanmayan bir ön eke sahip. |
Neden: Giriş XML yükü kullanılamıyor
Bu hata, giriş XML yükü iletilmezse veya API isteğinin bir parçası olarak XSLTransform politikasına sahip API Proxy'sine iletilen XML yükü boş olduğunda 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ü iletilmiyorsa veya boşsa hatanın nedeni, ayrıştırma sırasında dokümanın erken sonlandırıldığını gösterir. Bu bilgilerin tümünü hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
dosyasında XSL dosyasıXSL-Transform.xsl
, hatanın nedeni isePremature end of document while parsing at line 1 (possibly around char 0)
'dir. Bu hata, XML yükü aktarılmadığı veya 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 bir parçası olarak iletilen giriş XML yükünün boş olup olmadığını belirleyin. Giriş yükü iletilmezse veya boşsa hatanın nedeni budur.
Aşağıdaki örnek isteğinde, 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ğu için ş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ü gönderin. Örneğin:
Aşağıdaki içeriğe sahip
city.xml
adlı 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ı yapın:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
Neden: Yanlış biçimlendirilmiş giriş XML'i
API isteği kapsamında XSLTransform politikasına iletilen giriş XML yükü yanlış biçimlendirilmiş 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üşüm Politikası tarafından değerlendirilemeyen XSL dosyasını ve hatanın nedenini belirleyin. Giriş XML yükü yanlış biçimlendirilmişse hatanın 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
'te 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ği olup olmadığına bakın. Giriş yükü geçerli XML değilse hata bununla ilgilidir.
Aşağıdaki örnek isteğinde, 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
Buradaki
city.xml
:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }
Giriş yükü geçerli bir XML değil JSON olduğu için ş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ü gönderin. Örneğin:
city.xml
dosyasını, XML'deki içeriğin aşağıda gösterildiği gibi olması için değiştirin:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Aşağıdaki gibi cURL komutunu kullanarak 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 ön ek
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üşüm 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ülmemiş bir ön ek olduğunu gösterir. Bu bilgilerin tümünü hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
'te XSL dosyasıXSL-Transform.xsl
, hatanın nedeniUnresolved Prefix
ve satır numarası1
'tır."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ımlanmıştır) ve giriş XML yükü'nü inceleyin. Giriş XML yükü satır numarasında (yukarıdaki 1. adımda tanımlanmıştır) kullanılan ön ek XSL dosyasında yoksa hatanın nedeni budur.
Hataya neden olan örnek XSL ve ilgili XML yükü aşağıda 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ükleyici
<?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çerir. XSL'de bu ön ekin bulunmadığını unutmayın. Bunun yerine<xsl:text><Life></xsl:text>
ön ekiyle başlar. 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ımlanan 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 gibi değiştirebilirsiniz:
Güncellenen Giriş XML Yükleyicisi
<?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>