gpt4 book ai didi

xml - 为什么我的 XSLT 样式突然停止解析产品广告 API XML 响应?

转载 作者:行者123 更新时间:2023-12-04 05:55:57 26 4
gpt4 key购买 nike

谁能告诉我为什么这个 xslt 文件没有解析我附加的示例 xml 文件?它已经工作了几年,但它突然停止了。没有样式表,xml 文件可以从亚马逊返回,但我现在无法对其进行样式设置。

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 个网站已停止工作,因此任何帮助都值得赞赏。

最佳答案

更新

结果证明,除了下面解决的 XML namespace 问题之外,还涉及另一个问题,这两个问题都属于手头的问题,请参阅 Mark 的结束评论:

Amazon has changed the Endpoint from xml-uk.amznxslt.com to 'ecs.amazonaws.co.uk'.



大概是 XML namespaceAmazon Product Advertising API已更新(通过当前的 Schema Location 确认),请参阅相应的声明:

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 响应中的元素不匹配。

解决方案

更新转换中的命名空间可能会解决这个问题,假设亚马逊刚刚添加了元素等 - 您在转换中实际使用的元素( aws:Itemaws: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>

关于xml - 为什么我的 XSLT 样式突然停止解析产品广告 API XML 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com