- My XML look like this......
- <?xml version="1.0" encoding="UTF-8"?>
- <dataroot xmlns:od="urn:schemas-
- microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd" generated="2010-08-20T01:52:04">
- <BU>
- <Classification1>Air Cargo</Classification1>
- <Customer>Freight International LLC</Customer>
- <City>parco</City>
- <Box>11745</Box>
- <TelCode>04</TelCode>
- <TelNo>3430060</TelNo>
- <FaxNo>3430075</FaxNo>
- <priority1>#</priority1>
- <Image>aaa.ai</Image>
- </BU>
- <BU>
- <Classification1>Air Cargo</Classification1>
- <Customer>Freight International LLC</Customer>
- <City>tazese</City>
- <Box>11745</Box>
- <TelCode>09</TelCode>
- <TelNo>3431234</TelNo>
- <FaxNo>3434321</FaxNo>
- <priority1>#</priority1>
- <Image>aaa.ai</Image>
- </BU>
- <BU>
- <Classification1>Air Cargo</Classification1>
- <Customer>Freight International LLC</Customer>
- <City>raseus</City>
- <Box>56899</Box>
- <TelCode>08</TelCode>
- <TelNo>347890</TelNo>
- <FaxNo>345678</FaxNo>
- <priority1>#</priority1>
- <Image>aassa.ai</Image>
- </BU>
- <BU>
- <Classification1>Air Cargo</Classification1>
- <Customer>ooohs International LLC</Customer>
- <City>uiiri</City>
- <Box>53499</Box>
- <TelCode>06</TelCode>
- <TelNo>347990</TelNo>
- <FaxNo>340988</FaxNo>
- <priority2>%</priority2>
- <Image>aaa.ai</Image>
- </BU>
- <BU>
- <Classification1>Air Cargo</Classification1>
- <Customer>kas International LLC</Customer>
- <City>kiriri</City>
- <Box>533699</Box>
- <TelCode>06</TelCode>
- <TelNo>347890</TelNo>
- <FaxNo>342588</FaxNo>
- <priority3>^</priority3>
- <Image>aaa.ai</Image>
- </BU>
- <BU>
- <Classification1>Air Cargo</Classification1>
- <Customer>kas International LLC</Customer>
- <City>kiriri</City>
- <Box>533699</Box>
- <TelCode>06</TelCode>
- <TelNo>347890</TelNo>
- <FaxNo>342588</FaxNo>
- <priority3>^</priority3>
- <Image>aaa.ai</Image>
- </BU>
- </dataroot>
- My XSLT look like this......
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp ""> ]>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
- <xsl:param name="platform">win</xsl:param>
- <xsl:param name="sortbylang">en-us</xsl:param>
- <xsl:output indent="no" encoding="UTF-8" method="xml"/>
- <xsl:strip-space elements="*"/>
- <xsl:template match="/">
- <xsl:variable name="blocks" select="dataroot/BU"/>
- <xsl:variable name="images" select="dataroot/BU/Image"/>
- <xsl:variable name="customers" select="dataroot/BU/Customer"/>
- <Root>
- <xsl:result-document method="xml" href="alpha_out1.xml">
- <xsl:for-each-group select="dataroot/BU" group-by="substring(Customer,1,1)">
- <xsl:sort select="current-grouping-key()" order="ascending"/>
- <xsl:variable name="currentGroup"><xsl:value-of select="current-grouping-key()"/></xsl:variable>
- <xsl:for-each select=".">
- <xsl:element name="title">
- <xsl:value-of select="current-grouping-key()"/>
- </xsl:element><xsl:text>
</xsl:text>
- <xsl:for-each select="current-group()">
- <!-- new sorting --> <xsl:sort select="Customer" order="ascending"/>
- <xsl:apply-templates/>
- </xsl:for-each>
- </xsl:for-each>
- </xsl:for-each-group>
- </xsl:result-document>
- </Root>
- </xsl:template>
- <xsl:template match="Customer">
- <xsl:if test="following-sibling::Image"><xsl:apply-templates select="following-sibling::Image" mode="siblingImage"/></xsl:if>
- <Customer>
- <xsl:value-of select="."/>
- <xsl:text></xsl:text>
- </Customer>
- <xsl:text>
</xsl:text>
- <xsl:if test="following-sibling::Box | following-sibling::City | following-sibling::TelCode | following-sibling::TelNo">
- <Address>
- <xsl:if test="string-length(following-sibling::Box) > 1">Box <xsl:value-of select="following-sibling::Box"/>
- <xsl:text>, </xsl:text></xsl:if>
- <xsl:if test="string-length(following-sibling::City) > 1"><xsl:value-of select="following-sibling::City"/>
- <xsl:text>, </xsl:text></xsl:if>
- <xsl:if test="string-length(following-sibling::TelNo) > 1"><xsl:text>	</xsl:text>
- <xsl:if test="string-length(following-sibling::TelCode) > 1">
- <xsl:value-of select="following-sibling::TelCode"/><xsl:text> </xsl:text></xsl:if>
- <xsl:value-of select="following-sibling::TelNo"/></xsl:if>
- </Address>
- <xsl:text></xsl:text>
- </xsl:if>
- <xsl:text>
</xsl:text>
- </xsl:template>
- <!-- make an href value for Image element -->
- <xsl:template match="Image" mode="siblingImage">
- <!-- make the href value into a variable value -->
- <xsl:variable name="image">
- <xsl:value-of select="@href"/>
- </xsl:variable>
- <!-- get the image name <Image href="images\blue logo.eps"/> -->
- <xsl:variable name="imageFolder">
- <xsl:value-of select="substring-before($image,'\')"/>
- </xsl:variable>
- <xsl:variable name="imageHref">
- <xsl:value-of select="substring-after($image,'\')"/>
- </xsl:variable>
- <xsl:element name="Image">
- <xsl:choose>
- <xsl:when test="$platform='win'">
- <!-- change any space to %20 -->
- <xsl:variable name="winImage">
- <xsl:value-of select="translate($imageHref,' ','%20')"/>
- </xsl:variable>
- <!-- build the Windows file path -->
- <xsl:variable name="winPath">
- <xsl:text>file:///D:/new%20dicrectory/Alpha%20New/images/</xsl:text>
- <xsl:value-of select="."/>
- </xsl:variable>
- <!-- put the windows path to the image into the href attribute value -->
- <xsl:attribute name="href">
- <xsl:value-of select="$winPath"/>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$platform='mac'">
- <xsl:attribute name="href">
- <!-- not sure how to handle the mac path so will just copy it for now -->
- <xsl:value-of select="$image"/>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
- </xsl:element>
- <xsl:text>
</xsl:text>
- </xsl:template>
- <xsl:template match="*|@*"/>
- </xsl:stylesheet>
- My Result look like this.............
- <?xml version="1.0" encoding="UTF-8"?>
- <title>F</title>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>Freight International LLC</Customer>
- <Address>Box 11745, parco, 04 3430060</Address>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>Freight International LLC</Customer>
- <Address>Box 11745, tazese, 09 3431234</Address>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aassa.ai"/>
- <Customer>Freight International LLC</Customer>
- <Address>Box 56899, raseus, 08 347890</Address>
- <title>k</title>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>kas International LLC</Customer>
- <Address>Box 533699, kiriri, 06 347890</Address>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>kas International LLC</Customer>
- <Address>Box 533699, kiriri, 06 347890</Address>
- <title>o</title>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>ooohs International LLC</Customer>
- <Address>Box 53499, uiiri, 06 347990</Address>
- I want final result look like this....
- <?xml version="1.0" encoding="UTF-8"?>
- <Root>
- <title>F</title>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>Freight International LLC</Customer>
- <Address>Box 11745, parco, 04 3430060</Address>
- <Address>Box 11745, tazese, 09 3431234</Address>
- <Address>Box 56899, raseus, 08 347890</Address>
- <title>k</title>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>kas International LLC</Customer>
- <Address>Box 533699, kiriri, 06 347890</Address>
- <title>o</title>
- <Image href="file:///D:/new%20dicrectory/Alpha%20New/images/aaa.ai"/>
- <Customer>ooohs International LLC</Customer>
- <Address>Box 53499, uiiri, 06 347990</Address>
- </Root>
- One Customer having few branches so braches should come under the customer, Same time i want remove duplicate XML data(Maybe same data come repeat)