2

このxsltファイルが添付したサンプルxmlファイルを解析しない理由を誰かに教えてもらえますか?それは数年の間働いていました、しかしそれは突然止まりました。スタイルシートがないと、xmlファイルはAmazonから返されますが、今はスタイルを設定できません。

xsltファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?><!-- DWXMLSource="wii top sellers Med.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">
    <xml>
    <root>
        <xsl:apply-templates select="aws:ItemSearchResponse/aws:Items/aws:Item" />
    </root>
    </xml>
</xsl:template>

<xsl:template match="aws:Item">
<xsl:variable name="asin" select="aws:ASIN" />

    <Item>
        <gameAsin>
            <xsl:value-of select="$asin" />
        </gameAsin>
    </Item>
</xsl:template> 
</xsl:stylesheet>

XMLファイルのサンプルは次のとおりです。

<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<OperationRequest>
        <RequestId>3dadfcef-c438-40bd-b96b-1ba34811aa70</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="ItemSearch"></Argument>
            <Argument Name="Service" Value="AWSECommerceService"></Argument>
            <Argument Name="AssociateTag" Value="wii07-21"></Argument>
            <Argument Name="Keywords" Value="&quot;Bundle&quot;"></Argument>
            <Argument Name="Sort" Value="salesrank"></Argument>
            <Argument Name="SubscriptionId" Value="xxxxxxxxx"></Argument>
            <Argument Name="ItemSearch.1.BrowseNode" Value="676410011"></Argument>
            <Argument Name="Signature" Value="xxxxxxxx"></Argument>
            <Argument Name="ItemSearch.Shared.SearchIndex" Value="VideoGames"></Argument>
        <Argument Name="Timestamp" Value="2012-03-01T15:44:24Z"></Argument>
            <Argument Name="ResponseGroup" Value="Large"></Argument>
            <Argument Name="ItemSearch.2.BrowseNode" Value="676398011"></Argument>
        </Arguments>
        <RequestProcessingTime>0.2811460000000000</RequestProcessingTime>
</OperationRequest>
<Items>
    <Item>
        <ASIN>B004JMZH4O</ASIN>
    </Item>
</Items>
</ItemSearchResponse>

このため、私のサイトの5つが機能しなくなったため、助けていただければ幸いです。

4

1 に答える 1

3

アップデート

以下で対処するXML名前空間の問題に加えて、別の問題が関係していることが判明しました。どちらも目前の問題に相当します。Markの締めくくりのコメントを参照してください。

Amazonは、エンドポイントをxml-uk.amznxslt.comから「ecs.amazonaws.co.uk」に変更しました。


おそらく、 Amazon Product Advertising APIXML名前空間が更新されています(現在のスキーマの場所で確認されています)。それぞれのステートメントを参照してください。

XSLT変換

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-10-05">

XML応答

<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">

原因

名前空間が一致しなくなったため、XML変換のそれぞれのセレクター(たとえばselect="aws:ItemSearchResponse/aws:Items/aws:Item")はXML応答の要素と一致しません。

解決

Amazonが要素などを追加したばかりであると仮定すると、トランスフォームで名前空間を更新すると、問題が解決する可能性aws:Itemがあります。トランスフォーム(およびaws:ASIN)で実際に使用している要素は少なくとも存在します。そうしないと、新しいスキーマに従ってセレクターを順番に調整する必要がある場合があります。


付録

私のコメントを説明するために-これは、調整された名前空間を使用して変換を適用した結果です。これは、現在もすべての結果要素に適用され、それに応じて後続の処理パイプラインに影響を与える可能性があります。

<?xml version="1.0" encoding="iso-8859-1"?>
<xml xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
  <root>
    <Item>
      <gameAsin>B004JMZH4O</gameAsin>
    </Item>
  </root>
</xml>
于 2012-03-01T16:46:29.973 に答える