This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
XPath Query
- To: "'XSL-List at lists dot mulberrytech dot com'" <XSL-List at lists dot mulberrytech dot com>
- Subject: [xsl] XPath Query
- From: Bryan Tulloch <b dot tulloch at solicitec dot com>
- Date: Mon, 16 Jul 2001 09:39:16 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
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