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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Help with Transformation, G. Ken Holman | Thread | Re: [xsl] Help with Transformation, XSL-List Owner |
Re: [xsl] Help with Transformation, G. Ken Holman | Date | Re: [xsl] Help with Transformation, XSL-List Owner |
Month |