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 şu durumlarda oluşur:
- Kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Çözülemiyor (tanımlanmamış)
Örneğin, XSL Dönüşümü politikasının istek akışında yürütülmesi gerekirken <Source> öğesi istek akışında bulunmayan yanıt değişkenine ayarlanırsa bu hata oluşur.
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ğıdakifaultstringiçinde politika adıxslt, değişken iseresponse'dir:faultstring": "response message is not available for XSL: xsltBaşarısız XSL Dönüşümü politikası XML'sinde,
<Source>öğesinde ayarlanan değişken adının, hata dizesinde tanımlanan değişken adıyla (yukarıdaki 1. adım) eşleştiğini doğrulayın. Örneğin, aşağıdaki XSL Dönüşümü politikası, hata dizesindekiyle eşleşen<Source>öğesinderesponseadlı bir değişkeni belirtir:<?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, XSL Dönüşümü politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılabilir olup olmadığını belirleyin.Değişken şu durumlarda:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
- Çözülemiyor (tanımlanmamış)
Bu durumda hatanın nedeni budur.
Örneğin, yukarıda gösterilen XSL Dönüşümü politikasının istek akışında yürütülmesi gerektiğini varsayalım.
responsedeğişkeninin, örnek politikanın<Source>öğesinde kullanıldığını hatırlayın.responsedeğişkeni yalnızca yanıt akışında kullanılabilir.responsedeğişkeni istek akışında mevcut olmadığından ş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, 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 ortaya çıkar:
- 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üremiyor. XSLTransform politikasının başarısız olmasının birçok farklı nedeni olabilir. Hata mesajındaki hata nedeni, neden hakkında daha fazla bilgi sağlar. Aşağıdaki tabloda, bu hatanın nedenlerinden biri olan "Geçersiz Önek" listelenmekte ve bir örnekle açıklanmaktadır.
| Neden | Açıklama |
|---|---|
| Giriş XML yükü kullanılamıyor | Giriş XML yükü iletilmiyor veya boş. |
| Hatalı biçimlendirilmiş giriş XML'si | Giriş XML yükü hatalı biçimlendirilmiş veya geçersiz. |
| Geçersiz önek | Giriş XML yükünde, XSL dosyasında tanımlanmamış bir önek var. |
Neden: Giriş XML yükü kullanılamıyor
Bu hata, giriş XML yükü iletilmediğinde veya XSLTransform politikasına sahip API Proxy'sine API isteğinin bir parçası olarak iletilen XML yükü boş olduğunda 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ü iletilmezse veya boşsa hata nedeni, ayrıştırma sırasında belgenin erken sonlandırıldığını gösterir. Tüm bu bilgileri hata yanıtının
faultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstringiçinde 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ünün iletilmediği 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 istekte, kullanıcının gönderdiği 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ü ve boş olmayan bir giriş olduğundan emin olun.
Örnek XSLTransform politikasıyla ilgili sorunu düzeltmek için geçerli bir XML yükü iletin. Örneğin:
Aşağıdaki içeriğe sahip
city.xmladlı 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'si
XSLTransform politikasına API isteğinin bir parçası olarak iletilen giriş XML yükü hatalı 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üştürme politikası tarafından değerlendirilemeyen XSL dosyasını ve hatanın nedenini belirleyin. Giriş XML yükü hatalı biçimlendirilmişse 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ğıdakifaultstringiçinde XSL dosyasıXSL-Transform.xsl, başarısızlık nedeni iseUnexpected char while looking for open tag ('<') character'dir. 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ığını kontrol edin. Giriş yükü geçerli bir XML değilse hatanın nedeni budur.
Aşağıdaki örnek istekte, kullanıcının gönderdiği giriş yükü (yani istek gövdesi) geçersizdir.
Örneğin:
curl -v "http://<org>-<env>.apigee.net/v1/xsltransform" -H "Content-Type: application/xml" -X POST -d @city.xmlcity.xmlşu durumlarda kullanılabilir:{ "City": "Bengaluru", "Name": "Apigee", "Pincode": "560016" }Giriş yükü JSON olduğu ve geçerli XML olmadığı 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ü 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:
Dosyayı
city.xmlaşağıdaki gibi XML biçiminde içerik içerecek şekilde değiştirin:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>API çağrısını aşağıdaki gibi cURL komutunu kullanarak 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ünde, politikada belirtilen XSL dosyasında önek olarak tanımlanmamış bir öğe var.
Ö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, başarısızlık nedeni, giriş XML yükünde belirli bir satır numarasında çözümlenmemiş bir önek olduğunu gösterir. Tüm bu bilgilere hata yanıtının
faultstringöğesinden ulaşabilirsiniz. Örneğin, aşağıdakifaultstringiçinde XSL dosyasıXSL-Transform.xsl, hatanın nedeniUnresolved Prefixve satır numarası1'dır."faultstring":"Evaluation of XSL XSL-Transform.xsl failed with reason: \"Unresolved Prefix at line 1(possibly around char 270)\""XSL dosyasının (yukarıdaki 1. adımda belirtilen) ve giriş XML yükünün içeriğini inceleyin. Giriş XML yükünün satır numarasında (yukarıdaki 1. adımda tanımlanmıştır) kullanılan önek XSL dosyasında yoksa hatanın nedeni budur.
Aşağıda, hataya neden olan örnek XSL ve karşılık gelen 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çerir. XSL'de bu önek bulunmadığı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 ön ek olarak tanımlanan tüm öğe biçimlerine sahip olduğundan emin olun.
Yukarıda gösterilen örnek XML dosyasını düzeltmek için dosyayı aşağıdaki gibi 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>