[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Getting info from certain nodes only

Subject: Getting info from certain nodes only
From: "Jorge A. Salido" <jorgesalido@xxxxxxxxx>
Date: 24 Oct 2002 16:12:09 -0600
xsl select row
Hi 

I've been going circles around this code for a while, so I thought to
give the list a try. I intend to display only some info from an xml
file, with a previously given configuration. In this case, the <header>
part defines the columns from the <records> that should be displayed. In
the example, field1 and field3 are the only ones that I want to see. 

I actually got this to work, but then the xsl sort was broken, and since
I need the sort, I've been looking for an alternate solution. The
closest I have come so far is to get the <columns> in a key, but then
I'm having problem getting the values back, since I have not found a way
to successfully reference them back. I used position() as the key value,
but it seems to be getting only the first column, but not the second
one, therefor I had to use an artificial "order" value, which I
currently do not like.

Also, since I have to go back to check out how many columns are there in
the table (kind of an iteration - I miss the while's and for's...), I
completely lose the sorting part. Is there also a way to count how many
items you have in a key element? Or perhaps a way to use a key in a
for-each statement? Any hints?

Jorge




partial xml data file 
----------------------------------------------------------------- 

<data> 
<header> 
<column order="1" field="field1" align="left"> 
<title align="left">First</title> 
</column> 
<column order="2" field="field3" align="left"> 
<title align="left">Second</title> 
</column> 
</header> 
<records> 
<row> 
<cell src="field1">John</cell> 
<cell src="field2">A</cell> 
<cell src="field3">Smith</cell> 
<cell src="field4"></cell> 
<cell src="field5"></cell> 
</row> 
<row> 
<cell src="field1">William</cell> 
<cell src="field2"></cell> 
<cell src="field3">Thompson</cell> 
<cell src="field4"></cell> 
<cell src="field5"></cell> 
</row> 
<row> 
<cell src="field1">Mark</cell> 
<cell src="field2"></cell> 
<cell src="field3">Martinez</cell> 
<cell src="field4"></cell> 
<cell src="field5"></cell> 
</row> 
<row> 
<cell src="field1">George</cell> 
<cell src="field2">S</cell> 
<cell src="field3">Wilson</cell> 
<cell src="field4"></cell> 
<cell src="field5"></cell> 
</row> 
<row> 
<cell src="field1">Charles</cell> 
<cell src="field2"></cell> 
<cell src="field3">Jackson</cell> 
<cell src="field4"></cell> 
<cell src="field5"></cell> 
</row> 
</records> 
</data> 


partial xslt stylesheet 
------------------------------------------------------------------ 

<xsl:variable name="numberOfColumns"
select="count(/data/header/column)"/> 
<xsl:key name="showColumns" match="/data/header/column" use="@order" /> 



<xsl:template name="createRow"> 
<xsl:value-of select="count(records/row)"></xsl:value-of> 
<xsl:for-each select="records/row"> 
<xsl:sort select="cell[1]"/> 
<xsl:variable name="currentRow" select="position()"/> 
<tr class="fondo{position() mod 2}"> 
<xsl:for-each select="//column"> 
<xsl:variable name="currentCol" select="position()"/> 
<td> 
<xsl:variable name="currentField" select="key('showColumns',
$currentCol)/@field"/> 
<b><xsl:value-of select="$currentField"/></b> 
<xsl:value-of select="//row[$currentRow]/cell[@src=$currentField]"/> 
</td> 
</xsl:for-each> 
</tr> 
</xsl:for-each> 
</xsl:template> 


current output
-----------------------------------------------------------------------
FirstSecondEditar 
field1	John		field3Smith 
field1	William		field3Thompson 
field1	Mark		field3Martinez 
field1	George		field3Wilson 
field1	Charles		field3Jackson






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.