Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > Help needed with XSL

Reply
Thread Tools

Help needed with XSL

 
 
Rohit
Guest
Posts: n/a
 
      08-12-2004
I have a XML which looks like this:

<root>
<row Site="ABC" ClassroomName="Calculus" StartDate="Jun 1 2004"/>
<row Site="ABC" ClassroomName="Biology" StartDate="Jun 10 2004"/>
<row Site="XYZ" ClassroomName="History" StartDate="Jun 12 2004"/>
<row Site="XYZ" ClassroomName="English" StartDate="Jun 1 2004"/>
</root>

I want this to be displayed in a <table> as
----------------------------------------------
ABC
ClassroomName StartDate
Calculus June 1 2004
Biology June 10 2004

XYZ
ClassroomName StartDate
History June 12 2004
English June 1 2004
----------------------------------------------

As you can see, the 'Site' goes first, then we have column headings
for Classroom and Date, then the rows belonging to that 'site'. The
XML is always sorted on 'Site'.

This is what I have been come up with:
------------------------------------------------------------------------------
<xsl:template match="/">
<table width="100%">
<tr>
<td><b>Site</b></td>
<td><b>ClassroomName</b></td>
<td><b>Start Date</b></td>
</tr>
<xsl:apply-templates select="ROOT/row" />
</table>
</xsl:template>

<xsl:template match="ROOT/row">
<tr>
<td><xsl:value-of select="@Site"></xsl:value-of></td>
<td><xsl:value-of select="@ClassroomName"></xsl:value-of></td>
<td><xsl:value-of select="@StartDate"></xsl:value-of>
</tr>
</xsl:template>
--------------------------------------------------------------------

Can somebody please advice me how to get the above formatting by
modifying this xsl template.

Thanks,
Rohit
 
Reply With Quote
 
 
 
 
=?ISO-8859-1?Q?R=E9mi_Peyronnet?=
Guest
Posts: n/a
 
      08-12-2004
> Can somebody please advice me how to get the above formatting by
> modifying this xsl template.


You have to get distinct @Site values. This trick is done in xslt by
using key() feature. There is a nice template in the excellent Cooktop
xml editor.

You can also choose to use a less standard thing as e-xslt
(www.exslt.org) which provide a distinct function
(http://www.exslt.org/set/functions/distinct/index.html)

Here is a working xsl (consider some improvement in the key to avoid the
//row select) :

---------------------------------------------------------------------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlnssl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="site" match="@Site" use="."/>


<xsl:template match="/">

<!-- the key declaration must be global ! -->

<!--
substitute xpath with xpath to your xpath to the node to iterate
substitute @att with the name of the attribute or . for txt node.
-->
<xsl:for-each select="root/*[count(@Site | key('site', @Site)[1]) = 1]">

<b><xsl:value-of select="@Site" /></b>

<table width="100%">
<tr>
<td><b>ClassroomName</b></td>
<td><b>Start Date</b></td>
</tr>
<xsl:apply-templates select="//row[@Site=current()/@Site]" />
</table>
</xsl:for-each>
</xsl:template>

<xsl:template match="row">
<tr>
<td><xsl:value-of select="@ClassroomName" /></td>
<td><xsl:value-of select="@StartDate" /></td>
</tr>
</xsl:template>

</xsl:stylesheet>
---------------------------------------------------------------------

Hth

--
Rémi Peyronnet
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Help with XSL/XSL:FO for producing revision indicator bar in document. =?iso-8859-1?q?Jean-Fran=E7ois_Michaud?= XML 6 05-03-2006 02:46 PM
XSL Question tp xsl:for-each and xsl:variable schaf@2wire.ch XML 1 05-27-2005 09:25 PM
tomcal/xsl - problems with xsl:include Klaus Friese Java 0 11-22-2004 10:17 AM
XSL-1000: (Fatal Error) Error while parsing XSL file (org.apache.xerces.parsers.AbstractSAXParser$AttributesProxy) Kevin Flood Java 1 09-13-2004 02:28 PM
XSL-1000: (Fatal Error) Error while parsing XSL file (org.apache.xerces.parsers.AbstractSAXParser$AttributesProxy) Kevin Flood Java 0 09-08-2004 02:11 PM



Advertisments