XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
nayu raneSubject: problem with formatting data using xslt..
Author: nayu rane
Date: 27 Dec 2004 06:53 PM
I am trying to do some data formatting with my xml.

For eg ..my xml is as below

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="stylesheet/webtemplate.xsl"?>
<Brand>
<Phones>
<model>
<name>9210i</name>
<price>$300</price>
</model>

<model>
<name>9210</name>
<price>$250</price>
</model>

<model>
<name>9110</name>
<price>$50</price>
</model>

<model>
<name>8910i/7600</name>
<price>$300</price>
</model>

<model>
<name>8910</name>
<price>$170</price>
</model>

<model>
<name>8855</name>
<price>$110</price>
</model>

<model>
<name>8850/8890</name>
<price>$80</price>
</model>

<model>
<name>7110/6210</name>
<price>$25</price>
</model>

<model>
<name>8310</name>
<price>$110</price>
</model>

<model>
<name>8210</name>
<price>$60</price>
</model>

<model>
<name>8250</name>
<price>$80</price>
</model>

<model>
<name>7650</name>
<price>$200</price>
</model>

<model>
<name>7610</name>
<price>$550</price>
</model>

<model>
<name>6820</name>
<price>$240</price>
</model>


<model>
<name>6800/5100</name>
<price>$130</price>
</model>

<model>
<name>6610i</name>
<price>$220</price>
</model>

<model>
<name>6610/6100</name>
<price>$160</price>
</model>

<model>
<name>6230</name>
<price>$410</price>
</model>

<model>
<name>6510</name>
<price>$90</price>
</model>

<model>
<name>6150/6110/5110</name>
<price>$10</price>
</model>

<model>
<name>6108/3300</name>
<price>$170</price>
</model>

<model>
<name>6220/5140</name>
<price>$230</price>
</model>

<model>
<name>5210/3610/1100</name>
<price>$60</price>
</model>

<model>
<name>3660</name>
<price>$300</price>
</model>

<model>
<name>3650</name>
<price>$250</price>
</model>

<model>
<name>3530</name>
<price>$70</price>
</model>

<model>
<name>3310/3330</name>
<price>$45</price>
</model>
<model>
<name>2100</name>
<price>$70</price>
</model>

<model>
<name>N-gage QD</name>
<price>$220</price>
</model>
</Phones>
</Brand>



and xslt is as below:

<xsl:stylesheet xmlns:xsl =
"http://www.w3.org/1999/XSL/Transform" version =
"1.0" >
<xsl:output method="html" indent="yes" />

<xsl:template match="//Phones" >
<html>
<head>
<title>Yaddayadda...</title>
</head>
<body >
<table border="1">
<xsl:apply-templates />
</table>
</body>
</html>
</xsl:template>

<xsl:template match="model[position() mod 2 = 1]">
<tr>
<td><xsl:value-of select="./name" /></td>
<td><xsl:value-of select="./price" /></td>
<td><xsl:value-of select="following-sibling::node()[position() = 1]/name" /></td>
<td><xsl:value-of select="following-sibling::node()[position() = 1]/price" /></td>
</tr>
</xsl:template>

<xsl:template match="name"/>
<xsl:template match="price"/>

</xsl:stylesheet>

and my current output is as shown below
::: CURRENT OUTPUT:::
xsl transformation output:
9210i $300 9210 $250
9110 $50 8910i/7600 $300
8910 $170 8855 $110
8850/8890 $80 7110/6210 $25
8310 $110 8210 $60
8250 $80 7650 $200
7610 $550 7250i $220
which is similar to the following format..
<item1> <item2>
<item3> <item4>
<item5> <item6>
<item7><item8>
<item9> <item10>

I need to change the output format as below:
:::EXPECTED OUTPUT:::
<item1> <item6>
<item2> <item7>
<item3> <item8>
<item4><item9>
<item5> <item10>

How do i do that? anybody can help..?

Posttop
Ivan PedruzziSubject: problem with formatting data using xslt..
Author: Ivan Pedruzzi
Date: 28 Dec 2004 10:52 AM
Hi Nayu

If I have understood your requirements the following transformation should solve the problem
Hope this helps
Ivan

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="mid" select="round(count(/Brand/Phones/model) div 2)"/>
<html>
<body>
<table>
<tr>
<td width="150">Name</td>
<td width="100">Price</td>
<td width="150">Name</td>
<td width="100">Price</td>
</tr>
<xsl:for-each select="Brand/Phones/model[position() &lt; $mid + 1]">
<xsl:variable name="p" select="position()"/>
<tr>
<td><xsl:value-of select="name"/></td><td><xsl:value-of select="price"/></td>
<td><xsl:value-of select="/Brand/Phones/model[$p + $mid]/name"/></td>
<td><xsl:value-of select="/Brand/Phones/model[$p + $mid]/price"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.