on 02-16-2011 8:34 AM
Hi
I have the following source structure:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_Source_Order xmlns:ns0="urn:local:orders">
<OrderHeader>
<OrderNr>1</OrderNr>
<Buyer>2</Buyer>
</OrderHeader>
<OrderLine>
<Item>A</Item>
<Quantity>B</Quantity>
</OrderLine>
<OrderLine>
<Item>C</Item>
<Quantity>D</Quantity>
</OrderLine>
</ns0:MT_Source_Order>
and i created this XSLT:
<?xml version= '1.0' encoding="UTF-8"?>
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" xmlns:ns0 = "urn:local:orders" xmlns:ns1 = "urn:local:orders">
<xsl:template match = "/">
<ns1:MT_Target_Order>
<Orders>
<xsl:for-each select="ns0:MT_Source_Order/OrderLine">
<Order>
<Ordernr>
<xsl:value-of select="MT_Source_Order/OrderHeader/OrderNr"/>
</Ordernr>
<Buyer>
<xsl:value-of select="MT_Source_Order/OrderHeader/Buyer"/>
</Buyer>
<Item>
<xsl:value-of select="MT_Source_Order/OrderLine/Item"/>
</Item>
<Quantity>
<xsl:value-of select="MT_Source_Order/OrderLine/Quantity"/>
</Quantity>
</Order>
</xsl:for-each>
</Orders>
</ns1:MT_Target_Order>
</xsl:template>
</xsl:stylesheet>
I created all objects up to the Operation Mapping.
When i test my xslt mapping the target structure comes out as:
<?xml version="1.0" encoding="UTF-8"?>
<ns1:MT_Target_Order xmlns:ns0="urn:local:orders" xmlns:ns1="urn:local:orders">
<Orders>
<Order>
<Ordernr/>
<Buyer/>
<Item/>
<Quantity/>
</Order>
<Order>
<Ordernr/>
<Buyer/>
<Item/>
<Quantity/>
</Order>
</Orders>
</ns1:MT_Target_Order>
The xml structure is OK, but i wanted the paired values in the output also. (order 1 = 12AB, order 2 = 12CD)
(I have also tried to insert variables in my XSLT but that didnt work either)
What do i need to change in my XSLT to pass the values to the target structure?
Thx
Robert
try below code,
<?xml version= '1.0' encoding="UTF-8"?>
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" xmlns:ns0 = "urn:local:orders" xmlns:ns1 = "urn:local:orders">
<xsl:template match = "/">
<ns1:MT_Target_Order>
<Orders>
<xsl:for-each select="OrderLine">
<Order>
<Ordernr>
<xsl:value-of select="OrderHeader/OrderNr"/>
</Ordernr>
<Buyer>
<xsl:value-of select="OrderHeader/Buyer"/>
</Buyer>
<Item>
<xsl:value-of select="OrderLine/Item"/>
</Item>
<Quantity>
<xsl:value-of select="OrderLine/Quantity"/>
</Quantity>
</Order>
</xsl:for-each></Orders>
</ns1:MT_Target_Order>
</xsl:template>
</xsl:stylesheet>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Please try this
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="urn:local:orders" xmlns:ns1="urn:local:orders">
<xsl:template match="/">
<ns1:MT_Target_Order>
<Orders>
<xsl:for-each select="ns0:MT_Source_Order/OrderLine">
<Order>
<Ordernr>
<xsl:value-of select="../OrderHeader/OrderNr"/>
</Ordernr>
<Buyer>
<xsl:value-of select="../OrderHeader/Buyer"/>
</Buyer>
<Item>
<xsl:value-of select="Item"/>
</Item>
<Quantity>
<xsl:value-of select="Quantity"/>
</Quantity>
</Order>
</xsl:for-each>
</Orders>
</ns1:MT_Target_Order>
</xsl:template>
</xsl:stylesheet>
Hi Ciochinah
I also managed to get the same result in a graphical mapping, using UseOneAsMany function.
However I also wanted to try it in XSLT and got stuck, so I posted question.
I used some basic XSLT blogs to create my XSLT.
Can you maybe advice on a good website or blog or something where i can find materials that can take me to the next level in XSLT programming. So I can learn the difference between what i did and what you advised?
Thx.
Robert
User | Count |
---|---|
75 | |
10 | |
10 | |
7 | |
7 | |
6 | |
6 | |
6 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.