Please help me on this ... i have just started working with XSL, and i need to complete this by weekend.
Here is the input :
[code=xml]
<ussco:ItemPric ing>
<ussco:ItemList >
<ussco:ListStar tDate>01/01/2007</ussco:ListStart Date>
<ussco:ListEndD ate>12/31/2010</ussco:ListEndDa te>
<ussco:ListAmou nt currencyID="USD ">13.79</ussco:ListAmoun t>
<ussco:ListUnit Code>KT</ussco:ListUnitC ode>
</ussco:ItemList>
<ussco:ItemList >
<ussco:ListStar tDate>10/08/2004</ussco:ListStart Date>
<ussco:ListEndD ate>12/31/2006</ussco:ListEndDa te>
<ussco:ListAmou nt currencyID="USD ">8.95</ussco:ListAmoun t>
<ussco:ListUnit Code>KT</ussco:ListUnitC ode>
</ussco:ItemList>
<ussco:ItemCost >
<ussco:CostType >FC</ussco:CostType>
<ussco:CostStar tDate>01/01/2007</ussco:CostStart Date>
<ussco:CostEndD ate>12/31/2010</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">5.170</oagis:CostAmoun t>
<ussco:CostUnit Code>KT</ussco:CostUnitC ode>
</ussco:ItemCost>
<ussco:ItemCost >
<ussco:CostType >FC</ussco:CostType>
<ussco:CostStar tDate>10/08/2004</ussco:CostStart Date>
<ussco:CostEndD ate>12/31/2006</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">4.470</oagis:CostAmoun t>
<ussco:CostUnit Code/>
</ussco:ItemCost>
<ussco:ItemCost >
<ussco:CostType >PR</ussco:CostType>
<ussco:CostStar tDate>12/10/2007</ussco:CostStart Date>
<ussco:CostEndD ate>06/30/2008</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">3.860</oagis:CostAmoun t>
<ussco:CostUnit Code>KT</ussco:CostUnitC ode>
</ussco:ItemCost>
<ussco:ItemCost >
<ussco:CostType >PR</ussco:CostType>
<ussco:CostStar tDate>11/01/2007</ussco:CostStart Date>
<ussco:CostEndD ate>06/30/2008</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">4.653</oagis:CostAmoun t>
<ussco:CostUnit Code/>
</ussco:ItemCost>
[/code]
This is the output expected :
[code=xml]
<ItemMaster xmlns:us="http://www.ussco.com/oagis/0">
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> 01/01/2007</ListStartDate>
<ListEndDate> 12/31/2010</ListEndDate>
<ListAmount>13. 79</ListAmount>
<ListUnitCode>K T</ListUnitCode>
<CostStartDate> 01/01/2007</CostStartDate>
<CostEndDate> 12/31/2010</CostEndDate>
<CostAmount>5.1 70</CostAmount>
<CostUnitCode>F C</CostUnitCode>
</CostLineInq>
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> 10/08/2004</ListStartDate>
<ListEndDate> 12/31/2006</ListEndDate>
<ListAmount>8.9 5</ListAmount>
<ListUnitCode>K T</ListUnitCode>
<CostStartDate> 12/10/2007</CostStartDate>
<CostEndDate> 06/30/2008</CostEndDate>
<CostAmount>3.8 60</CostAmount>
<CostUnitCode>P R</CostUnitCode>
</CostLineInq>
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> </ListStartDate>
<ListEndDate> </ListEndDate>
<ListAmount></ListAmount>
<ListUnitCode ></ListUnitCode>
<CostStartDate> 11/01/2007</CostStartDate>
<CostEndDate> 06/30/2008</CostEndDate>
<CostAmount>4.6 53</CostAmount>
<CostUnitCode>P R</CostUnitCode>
</CostLineInq>
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> </ListStartDate>
<ListEndDate> </ListEndDate>
<ListAmount></ListAmount>
<ListUnitCode ></ListUnitCode>
<CostStartDate> 10/08/2004</CostStartDate>
<CostEndDate> 12/31/2006</CostEndDate>
<CostAmount>4.4 70</CostAmount>
<CostUnitCode>F C</CostUnitCode>
</CostLineInq>
</ItemMaster>
[/code]
and here is the XSL i am struggling with to get the above output :
Thanks in advance for the help...
Here is the input :
[code=xml]
<ussco:ItemPric ing>
<ussco:ItemList >
<ussco:ListStar tDate>01/01/2007</ussco:ListStart Date>
<ussco:ListEndD ate>12/31/2010</ussco:ListEndDa te>
<ussco:ListAmou nt currencyID="USD ">13.79</ussco:ListAmoun t>
<ussco:ListUnit Code>KT</ussco:ListUnitC ode>
</ussco:ItemList>
<ussco:ItemList >
<ussco:ListStar tDate>10/08/2004</ussco:ListStart Date>
<ussco:ListEndD ate>12/31/2006</ussco:ListEndDa te>
<ussco:ListAmou nt currencyID="USD ">8.95</ussco:ListAmoun t>
<ussco:ListUnit Code>KT</ussco:ListUnitC ode>
</ussco:ItemList>
<ussco:ItemCost >
<ussco:CostType >FC</ussco:CostType>
<ussco:CostStar tDate>01/01/2007</ussco:CostStart Date>
<ussco:CostEndD ate>12/31/2010</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">5.170</oagis:CostAmoun t>
<ussco:CostUnit Code>KT</ussco:CostUnitC ode>
</ussco:ItemCost>
<ussco:ItemCost >
<ussco:CostType >FC</ussco:CostType>
<ussco:CostStar tDate>10/08/2004</ussco:CostStart Date>
<ussco:CostEndD ate>12/31/2006</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">4.470</oagis:CostAmoun t>
<ussco:CostUnit Code/>
</ussco:ItemCost>
<ussco:ItemCost >
<ussco:CostType >PR</ussco:CostType>
<ussco:CostStar tDate>12/10/2007</ussco:CostStart Date>
<ussco:CostEndD ate>06/30/2008</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">3.860</oagis:CostAmoun t>
<ussco:CostUnit Code>KT</ussco:CostUnitC ode>
</ussco:ItemCost>
<ussco:ItemCost >
<ussco:CostType >PR</ussco:CostType>
<ussco:CostStar tDate>11/01/2007</ussco:CostStart Date>
<ussco:CostEndD ate>06/30/2008</ussco:CostEndDa te>
<oagis:CostAmou nt currencyID="USD ">4.653</oagis:CostAmoun t>
<ussco:CostUnit Code/>
</ussco:ItemCost>
[/code]
This is the output expected :
[code=xml]
<ItemMaster xmlns:us="http://www.ussco.com/oagis/0">
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> 01/01/2007</ListStartDate>
<ListEndDate> 12/31/2010</ListEndDate>
<ListAmount>13. 79</ListAmount>
<ListUnitCode>K T</ListUnitCode>
<CostStartDate> 01/01/2007</CostStartDate>
<CostEndDate> 12/31/2010</CostEndDate>
<CostAmount>5.1 70</CostAmount>
<CostUnitCode>F C</CostUnitCode>
</CostLineInq>
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> 10/08/2004</ListStartDate>
<ListEndDate> 12/31/2006</ListEndDate>
<ListAmount>8.9 5</ListAmount>
<ListUnitCode>K T</ListUnitCode>
<CostStartDate> 12/10/2007</CostStartDate>
<CostEndDate> 06/30/2008</CostEndDate>
<CostAmount>3.8 60</CostAmount>
<CostUnitCode>P R</CostUnitCode>
</CostLineInq>
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> </ListStartDate>
<ListEndDate> </ListEndDate>
<ListAmount></ListAmount>
<ListUnitCode ></ListUnitCode>
<CostStartDate> 11/01/2007</CostStartDate>
<CostEndDate> 06/30/2008</CostEndDate>
<CostAmount>4.6 53</CostAmount>
<CostUnitCode>P R</CostUnitCode>
</CostLineInq>
<CostLineInq>
<ShortName>AMER AC</ShortName>
<ListStartDate> </ListStartDate>
<ListEndDate> </ListEndDate>
<ListAmount></ListAmount>
<ListUnitCode ></ListUnitCode>
<CostStartDate> 10/08/2004</CostStartDate>
<CostEndDate> 12/31/2006</CostEndDate>
<CostAmount>4.4 70</CostAmount>
<CostUnitCode>F C</CostUnitCode>
</CostLineInq>
</ItemMaster>
[/code]
and here is the XSL i am struggling with to get the above output :
Code:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oa="http://www.openapplications.org/oagis/9" xmlns:us="http://www.ussco.com/oagis/0"> <xsl:output method="xml" version="1.0" encoding="UTF-16" indent="yes"/> <xsl:namespace-alias stylesheet-prefix="oa" result-prefix="oa"/> <xsl:template match="/"> <ItemMaster> <xsl:variable name="ShortName" select="//us:ItemMaster/us:ItemMasterHeader/oa:ManufacturerItemID/oa:ID/@schemeAgencyName"/> <xsl:for-each select="//us:ItemPricing"> <xsl:variable name="currentPricingNode" select="."/> <xsl:for-each select="us:ItemCost"> <xsl:sort select="substring(us:CostEndDate,7,4)" order="descending"/> <!-- year --> <xsl:variable name="costIndex" select="position()"/> <CostLineInq> <ShortName> <xsl:value-of select="$ShortName"/> </ShortName> <ListStartDate> <xsl:value-of select="$currentPricingNode/us:ItemList[$costIndex]/us:ListStartDate"/> </ListStartDate> <ListEndDate> <xsl:value-of select="$currentPricingNode/us:ItemList[$costIndex]/us:ListEndDate"/> </ListEndDate> <ListAmount> <xsl:value-of select="$currentPricingNode/us:ItemList[$costIndex]/us:ListAmount"/> </ListAmount> <ListUnitCode> <xsl:value-of select="$currentPricingNode/us:ItemList[$costIndex]/us:ListUnitCode"/> </ListUnitCode> <CostStartDate> <xsl:value-of select="us:CostStartDate"/> </CostStartDate> <CostEndDate> <xsl:value-of select="us:CostEndDate"/> </CostEndDate> <CostAmount> <xsl:value-of select="$currentPricingNode/us:ItemCost[$costIndex]/oa:CostAmount"/> </CostAmount> <CostUnitCode> <xsl:value-of select="$currentPricingNode/us:ItemCost[$costIndex]/us:CostType"/> </CostUnitCode> </CostLineInq> </xsl:for-each> </xsl:for-each> </ItemMaster> </xsl:template> </xsl:stylesheet>
Comment