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 mesaj veya dize değişkeni aşağıdakilerden biriyse oluşur:
- 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üştürme politikasını ve adını tanımlayın değişkendir. Bu öğelerin ikisini de hata yanıtının
faultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstring
, politika adıxslt
, değişken iseresponse
olur:faultstring": "response message is not available for XSL: xslt
Başarısız XSL Dönüştürme politikası XML'inde değişkenin adının
<Source>
öğesindeki set, hatada tanımlanan değişken adıyla eşleşir dize (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 şunlardan biriyse:
- Kapsam dışında (politikanın geçerli olduğu belirli akışta kullanılamaz) yürütüldü) veya
- Çözümlenemez (tanımlanmamıştır)
hatanın nedeni budur.
Örneğin, yukarıda gösterilen XSL Dönüşüm politikasının istek akışında çalıştırılması 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
Değişkenin, başarısız XSL Dönüşümü <Source>
öğesinde ayarlanmış olduğundan emin olun
politikanın uygulandığı akış da tanımlanır ve bu akışta bulunur.
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ı başarısız oluyor/giriş XML dosyasını dönüştüremiyor dönüştürme kurallarına göre değiştirebilirsiniz. XSLTransform politikasının başarısız olmasının birçok farklı nedeni olabilir. Başarısızlığın nedeni nedeni hakkında daha fazla bilgi sağlar. Aşağıdakiler tablosunda bu hatanın nedeninden biri (Geçersiz Önek) listelenmiştir. Bu durumun nedeninin bir örnekle devam edelim.
Neden | Açıklama |
---|---|
Giriş XML yükü kullanılamıyor | Giriş XML yükü iletilmez veya boş kalmaz. |
Hatalı Giriş XML'si | Giriş XML yükü bozuk veya geçersiz. |
Geçersiz ön ek | Giriş XML yükü, XSL dosyasında tanımlanmayan bir öneke sahip. |
Neden: Giriş XML yükü kullanılamıyor
Bu hata, giriş XML yükü iletilmiyorsa veya API isteğinin bir parçası olarak API Proxy'ye iletilen XML yükü XSLTransform politikasına sahipse ve boşsa oluşur.
Ö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ü
faultstring
içinde bulabilirsiniz. öğesi seçin. Örneğin, aşağıdakifaultstring
içinde XSL dosyasıXSL-Transform.xsl
ve hatanın nedeniPremature end of document while parsing at line 1 (possibly around char 0)
. Bu hata, XML yükünün iletilmediğini veya boş olduğunu doğrulayın."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 bunun nedeni budur. hata için.
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ğ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ş bırakılamaz.
Ö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
XSLTransform politikasına yönelik API isteğinin bir parçası olarak aktarılan giriş 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ı tanımlayın daha iyi anlamanızı sağlayabilir. Giriş XML yükü hatalıysa başarısızlığın nedeni, beklenmeyen bir karakter olduğunu gösterir. Tüm bunları
faultstring
öğesindeki bilgilerdir. Örneğin,faultstring
, XSL dosyasıXSL-Transform.xsl
ve hata için:Unexpected 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ığını kontrol edin. Giriş yükü geçerli XML değilse hata bununla ilgilidir.
Aşağıdaki örnek istekte, giriş yükü (yani istek gövdesi) geçersiz olduğunu fark edebilirsiniz.
Örneğin:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xml
city.xml
burada:{ "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ı, içeriği aşağıdaki gibi XML biçiminde olacak şekilde değiştirin:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
Aşağıdaki şekilde, 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ımlanmayan bir öğe içeriyor.
Ö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ı tanımlayın daha iyi anlamanızı sağlayabilir. Bu durumda, başarısızlığın nedeni, giriş XML'sindeki belirli bir satır numarasında çözümlenmemiş bir ön ek bulunduğunu yük. Bu bilgilerin tümünü şu öğenin
faultstring
öğesinde bulabilirsiniz: hata yanıtı. Örneğin, aşağıdakifaultstring
öğesinde XSL dosyasıXSL-Transform.xsl
; hatanın nedeniUnresolved Prefix
ve satır numara1
."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. Ön ek, giriş XML yükü, XSL dosyasında mevcut değil; 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>
XML Yükleyicisi
<?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 olmadığına dikkat edin. 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>