Hi Sian,
Here is a possible solution for your problem.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2004/07/xpath-functions"
xmlns:xdt="http://www.w3.org/2004/07/xpath-datatypes">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="node() | @*">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Height | Width">
<xsl:element
name="{concat(substring-before(local-name(parent::*), 'Image'), local-name())}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
This Stylesheet is giving you the followign output after transforming your
input document:
<?xml version="1.0" encoding="UTF-8"?>
<ItemSearchResponse>
<OperationRequest>
<HTTPHeaders>
<Header/>
</HTTPHeaders>
<RequestId>187MFFZ905VXM20D1H6J</RequestId>
<Arguments>
<Argument Name="Service"
Value="AWSECommerceService"/>
</Arguments>
<RequestProcessingTime>0.546659946</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemSearchRequest>
<Power>title:Harry Potter</Power>
<ResponseGroup>Large</ResponseGroup>
<SearchIndex>Books</SearchIndex>
<Sort>salesrank</Sort>
</ItemSearchRequest>
</Request>
<TotalResults>717</TotalResults>
<TotalPages>72</TotalPages>
<Item>
<ASIN>0747581088</ASIN>
<DetailPageURL> </DetailPageURL>
<SalesRank>1</SalesRank>
<SmallImage>
<URL>http://images.amazon.com/images/P/0747581088.02._SCTHUMBZZZ_.jpg</URL>
<SmallHeight>75</SmallHeight>
<SmallWidth>53</SmallWidth>
</SmallImage>
<MediumImage>
<URL>http://images.amazon.com/images/P/0747581088.02._SCMZZZZZZZ_.jpg</URL>
<MediumHeight>160</MediumHeight>
<MediumWidth>113</MediumWidth>
</MediumImage>
<LargeImage>
<URL>http://images.amazon.com/images/P/0747581088.02._SCLZZZZZZZ_.jpg</URL>
<LargeHeight>500</LargeHeight>
<LargeWidth>352</LargeWidth>
</LargeImage>
</Item>
</Items>
</ItemSearchResponse>
HTH
wbr,
Roman
-----Ursprüngliche Nachricht-----
Von: Sian Mace [mailto:sianmace(_at_)hotmail(_dot_)com]
Gesendet: Mittwoch, 2. Februar 2005 15:02
An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Betreff: [xsl] Renaming One Element in a XML document using XSL
HI,
I am using Amazon web services and asp.net for a university project.
Im getting the xml back from the web service, but when trying
to load in to asp.net dataset I get problems because
Microsoft cannot support XML fully yet.
This is because the xml returned has element names the same
in different places.
What I need to do is to get the whole dataset, which is quite
massive, and just rename the rogue elements to something to
make them unique.
Here are the code and examples of what I want.
<ItemSearchResponse>
<OperationRequest>
<HTTPHeaders>
<Header ></Header>
</HTTPHeaders>
<RequestId>187MFFZ905VXM20D1H6J</RequestId>
<Arguments>
<Argument Name="Service"
Value="AWSECommerceService"></Argument>
</Arguments>
<RequestProcessingTime>0.546659946</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemSearchRequest>
<Power>title:Harry Potter</Power>
<ResponseGroup>Large</ResponseGroup>
<SearchIndex>Books</SearchIndex>
<Sort>salesrank</Sort>
</ItemSearchRequest>
</Request>
<TotalResults>717</TotalResults>
<TotalPages>72</TotalPages>
<Item>
<ASIN>0747581088</ASIN>
<DetailPageURL> </DetailPageURL>
<SalesRank>1</SalesRank>
<SmallImage>
<URL>http://images.amazon.com/images/P/0747581088.02._SCTHUMBZ
ZZ_.jpg</URL>
<Height>75</Height>
<Width>53</Width>
</SmallImage>
<MediumImage>
<URL>http://images.amazon.com/images/P/0747581088.02._SCMZZZZZ
ZZ_.jpg</URL>
<Height>160</Height>
<Width>113</Width>
</MediumImage>
<LargeImage>
<URL>http://images.amazon.com/images/P/0747581088.02._SCLZZZZZ
ZZ_.jpg</URL>
<Height>500</Height>
<Width>352</Width>
</LargeImage>
</Item>
</Items>
</ItemSearchResponse>
There is the a Height element (and width) in SmallImage,
LargeImage and Medium Image, And .Net Datasets cannot deal with this.
So I need to convert this to something like SmallHeight,
MediumHeight ect.
So I want to copy all the document and rename certain nodes.
How can I do this??
Any help would be greatly appreciated
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--