This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XPath Query
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] XPath Query
- From: Rene de Vries <RdVries at PCL-HaGe dot nl>
- Date: Mon, 16 Jul 2001 11:04:37 +0200
- Cc: "'b dot tulloch at solicitec dot com'" <b dot tulloch at solicitec dot com>
- Organization: PCL HaGé b.v.
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Bryan,
Think in templates!!!! xsl:call-template is only used for universal functions which you want to use at several places.
<xsl:template match="DATA">
<table border="1">
<xsl:apply-templates select="HISTORY"/>
</table>
</xsl:template>
<xsl:template match="HISTORY">
<xsl:variable name="NameCode" select="NAME"/>
<tr>
<td>
<xsl:value-of select="DESCRIPTION"/>
</td>
<td>
<xsl:value-of select="//DATA/NAME[@CODE=$NameCode]"/>
</td>
</tr>
</xsl:template>
Greetings Rene
{ @ @ }
^
\__/
"You don't need eyes to see, you need vision!"
-----Oorspronkelijk bericht-----
Van: Bryan Tulloch [SMTP:b.tulloch@solicitec.com]
Verzonden: maandag 16 juli 2001 10:45
Aan: 'XSL-List@lists.mulberrytech.com'
Onderwerp: [xsl] XPath Query
Hi,
I have tried to get the following to work, but thus far have only been able
to get part of the output I need.
My XML:
<DATA>
<HISTORY>
<NAME>21</NAME>
<DESCRIPTION>This is a history item 1</DESCRIPTION>
</HISTORY>
<HISTORY>
<NAME>22</NAME>
<DESCRIPTION>This is a history item 2</DESCRIPTION>
</HISTORY>
<HISTORY>
<NAME>21</NAME>
<DESCRIPTION>This is a history item 3</DESCRIPTION>
</HISTORY>
<HISTORY>
<NAME>24</NAME>
<DESCRIPTION>This is a history item 4</DESCRIPTION>
</HISTORY>
<HISTORY>
<NAME>21</NAME>
<DESCRIPTION>This is a history item 5</DESCRIPTION>
</HISTORY>
<NAME CODE="21">
<PERSON>Fred Bloggs</PERSON>
</NAME>
<NAME CODE="22">
<PERSON>John Smith</PERSON>
</NAME>
<NAME CODE="24">
<PERSON>Fred Jones</PERSON>
</NAME>
</DATA>
My desired output:
<TABLE>
<TR><TD>This is a history item 1</TD><TD>Fred Bloggs</TD></TR>
<TR><TD>This is a history item 2</TD><TD>John Smith</TD></TR>
<TR><TD>This is a history item 3</TD><TD>Fred Bloggs</TD></TR>
<TR><TD>This is a history item 4</TD><TD>Fred Jones</TD></TR>
<TR><TD>This is a history item 5</TD><TD>Fred Bloggs</TD></TR>
</TABLE>
My XSL (below) displays the description in the first column of the table.
However, I have not been able to find the correct XPath expression to put
the data needed for the second column into the table. I imagine that I need
to call another template such as "third" below, but don't know what to put
in it. By the way, I have spent several hours trying to solve this one, so
I'm not just being lazy!
<?xml version="1.0" encoding="utf-8"?>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="items"
select="//DATA[HISTORY/NAME=NAME/@CODE]/HISTORY/NAME" />
<xsl:template match="/">
<TABLE>
<xsl:call-template name="second" />
</TABLE>
</xsl:template>
<xsl:template name="second">
<xsl:for-each select="//DATA[./NAME/@CODE=$items]/HISTORY">
<TR>
<TD>
<xsl:value-of select="DESCRIPTION" />
</TD>
</TR>
</xsl:for-each>
<xsl:call-template name="third" />
</xsl:template>
<xsl:template name="third">
</xsl:template>
</xsl:transform>
Bryan
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list