Мне удалось успешно выполнить указанное преобразование для предоставленного XML-документа.
Результат преобразования:
<?xml version="1.0" encoding="iso-8859-1"?>
<xml xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<root>
True
676410011
TopSellers
NewReleases
676410011
Games
<BrowseNodeId>
<browsenode>676410011</browsenode>
</BrowseNodeId>
<TopSeller>
<tsAsin>B006ZN5WJ0</tsAsin>
<tstitle>Mario Party 9 (Wii)</tstitle>
</TopSeller>
<BrowseNodeId>
<browsenode>676410011</browsenode>
</BrowseNodeId>
<NewRelease>
<nrAsin>B0073POVPK</nrAsin>
<nrtitle>Pokepark 2: Wonders Beyond (Wii)</nrtitle>
</NewRelease>
True
676398011
TopSellers
NewReleases
676398011
Accessories
<BrowseNodeId>
<browsenode>676398011</browsenode>
</BrowseNodeId>
<TopSeller>
<tsAsin>B006O8ODD2</tsAsin>
<tstitle>Skylanders Spyro's Adventure: Triple Character Pack - Double Trouble, Whirlwind and Drill Sergeant (Wii/PS3/Xbox 360/PC)</tstitle>
</TopSeller>
<BrowseNodeId>
<browsenode>676398011</browsenode>
</BrowseNodeId>
<NewRelease>
<nrAsin>B005CT3J66</nrAsin>
<nrtitle>Level Up Stealth Media Storage Tower (PS3/Xbox 360/Wii)</nrtitle>
</NewRelease>
</root>
</xml>
Кроме того, таблица стилей XSLT доступна в http://www.wiiuser.co.uk/topsellersnewrel.xslt
Поэтому эта проблема не связана с XSLT. Скорее всего, другие значения параметров Url QS вызывают проблему, либо это может быть проблема, связанная с безопасностью.
Пожалуйста, обратитесь в службу поддержки Amazon для получения дополнительной помощи.
ОБНОВЛЕНИЕ : ОП попросил в комментарии исправить ошибку трансформации ... ... 1019 *
Проблема, которая вызывает нежелательный вывод, заключается в следующем коде:
<xsl:apply-templates select="aws:BrowseNodeLookupResponse/aws:BrowseNodes" />
Это применяет шаблоны к любому элементу aws:BrowseNodeLookupResponse/aws:BrowseNodes
, но предоставленный код XSLT не имеет шаблонов, соответствующих таким элементам.
В этом случае процессор XSLT выбирает для выполнения встроенный шаблон XSLT для элементов, который просто выдает <xsl:apply-templates>
, что приводит к обработке всех его дочерних элементов. Это повторяется рекурсивно, пока не встретится дочерний элемент текстового узла - в этом случае для выполнения выбирается встроенный шаблон для текстового узла, и его действие заключается в выводе текстового узла.
Так выводятся все потомки текстовых узлов aws:BrowseNodeLookupResponse/aws:BrowseNodes
(не являющиеся потомками элементов, для которых предусмотрены соответствующие шаблоны) .
Решение : Просто добавьте следующий шаблон:
<xsl:template match="text()"/>
Теперь выдается :
<?xml version="1.0" encoding="iso-8859-1"?>
<xml xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
<root>
<BrowseNodeId>
<browsenode>676410011</browsenode>
</BrowseNodeId>
<TopSeller>
<tsAsin>B006ZN5WJ0</tsAsin>
<tstitle>Mario Party 9 (Wii)</tstitle>
</TopSeller>
<BrowseNodeId>
<browsenode>676410011</browsenode>
</BrowseNodeId>
<NewRelease>
<nrAsin>B0073POVPK</nrAsin>
<nrtitle>Pokepark 2: Wonders Beyond (Wii)</nrtitle>
</NewRelease>
<BrowseNodeId>
<browsenode>676398011</browsenode>
</BrowseNodeId>
<TopSeller>
<tsAsin>B006O8ODD2</tsAsin>
<tstitle>Skylanders Spyro's Adventure: Triple Character Pack - Double Trouble, Whirlwind and Drill Sergeant (Wii/PS3/Xbox 360/PC)</tstitle>
</TopSeller>
<BrowseNodeId>
<browsenode>676398011</browsenode>
</BrowseNodeId>
<NewRelease>
<nrAsin>B005CT3J66</nrAsin>
<nrtitle>Level Up Stealth Media Storage Tower (PS3/Xbox 360/Wii)</nrtitle>
</NewRelease>
</root>
</xml>