Re: [xsl] Help with Transformation

Subject: Re: [xsl] Help with Transformation
From: Steve <subsume@xxxxxxxxx>
Date: Mon, 29 Oct 2007 15:22:54 -0400
I must say, your source XML is a little funky. In particular I am
talking about the Address nodes and their corresponding Zip nodes.
Correlating them simply by their order isn't necessarily the best way
to do it, nor (as I recall) will the order *always* be respected,
depending on your processor.

I attempted to come up with a full solution for you. May work in a
rickety manner or not at all. As Ken says, because your problem is so
open-ended a better subject for this thread might be 'Someone do this
for me'. Luckily, I have a soft-spot for people who learn by example.

<xsl:template match="/">
	<ListOfCustomers>
		<xsl:apply-templates select="CustomerSet" />
	</ListOfCustomers>
</xsl:template>
<xsl:template match="CustomerSet">
	<xsl:apply-templates select="AddressSet/Address[1]" />
</xsl:template>
<xsl:template match="Address">
	<MyCustomer>
		<Id><xsl:value-of
select="/Customer/CustomerAccount/ResponseHeader/CorrelationId /></Id>
		<AccoutName><xsl:value-of select="../../CustomerName" /></AccountName>
		<BillMonth><xsl:value-of select="../As/Above" /></BillMonth>
		<Product><!-- as above --></Product>
		<Address><xsl:value-of select="Address" /></Address>
		<Zip><xsl:value-of select="../ZipSet/Zip[position() =
current()/position()]" /></Zip>
		<!-- I'm honestly not sure if the above wrangling is legal. -->
	</MyCustomer>
</xsl:template>



On 10/29/07, Avaneesh Ramprasad <avaneesh@xxxxxxxxxxxxxx> wrote:
>
> Iam fairly new to xsl and iam stuck, i would greatly appreciate if someone could help me out here, below are the input and output xml documents
>
> Input xml
> <Customer>
>    <CustomerAccount>
>       <ResponseHeader>
>          <CorrelationId>1234</CorrelationId>
>    </ResponseHeader>
>       <ResponseStatus>
>          <Status>Success</Status>
>       </ResponseStatus>
>       <CustomerSet>
>          <CustomerName>Pizza Hut</CustomerName>
>          <Product>Product 1</Product>
>          <PurchaseMonth>October 2007</PurchaseMonth>
>         <AddressSet>
>           <Address>1 main st</Address>
>           <Address>2 river st</Address>
>           <Address>3rd st</Address>
>         </AddressSet>
>          <ZipSet>
>             <Zip>199360</Zip>
>             <Zip>94596</Zip>
>             <Zip>07974</Zip>
>          </ZipSet>
>    </CustomerSet>
>       <CustomerSet>
>          <CustomerName>Dominos</CustomerName>
>          <Product>Product 2</Product>
>          <PurchaseMonth>October 2007</PurchaseMonth>
>         <AddressSet>
>           <Address>21 Elm Road</Address>
>           <Address>55 Green St</Address>
>          </AddressSet>
>          <ZipSet>
>             <Zip>2583</Zip>
>             <Zip>48818</Zip>
>          </ZipSet>
>    </CustomerSet>
>    </CustomerAccount>
> <Customer>
>
> Below should be my output after transformation
> <ListOfCustomers>
>    <MyCustomer>
>       <Id>1234</Id>
>       <AccountName>Pizza Hut</AccountName>
>       <BillMonth>October 2007</BillMonth>
>       <Product>Product 1</Product>
>       <Address>1 main st</Address>
>       <Zip>199360</Zip>
>    </MyCustomer>
>    <MyCustomer>
>       <Id>1234</Id>
>       <AccountName>Pizza Hut</AccountName>
>       <BillMonth>October 2007</BillMonth>
>       <Product>Product 1</Product>
>       <Address>2 river st</Address>
>       <Zip>94596</Zip>
>    </MyCustomer>
>    <MyCustomer>
>       <Id>1234</Id>
>       <AccountName>Pizza Hut</AccountName>
>       <BillMonth>October 2007</BillMonth>
>       <Product>Product 1</Product>
>       <Address>3rd st</Address>
>       <Zip>07974</Zip>
>    </MyCustomer>
>    <MyCustomer>
>       <Id>1234</Id>
>       <AccountName>Dominos</AccountName>
>       <BillMonth>October 2007</BillMonth>
>       <Product>Product 2</Product>
>       <Address>21 Elm Road</Address>
>       <Zip>2583</Zip>
>    </MyCustomer>
>    <MyCustomer>
>       <Id>1234</Id>
>       <AccountName>Dominos</AccountName>
>       <BillMonth>October 2007</BillMonth>
>       <Product>Product 2</Product>
>       <Address>55 Green St</Address>
>       <Zip>48818</Zip>
>    </MyCustomer>
> </ListOfCustomers>
>
> Thank you for all your help in advance.

Current Thread