Click to See Complete Forum and Search --> : How to do a subquery with XSL?


Swiftie92
06-21-2010, 11:39 PM
How to do a "subquery" of the XML data with XSL?

I would like to select the details (1st name, last name and state) just with the number.


XML
<?xml version="1.0" ?>
<g>
<p id="1">
<name>John</name>
<last>Smith</last>
<state>NY</state>
</p>
<p id="2">
<name>Jason</name>
<last>Brown</last>
<state>CA</state>
</p>
<p id="3">
<name>Mike</name>
<last>Jones</last>
<state>TX</state>
</p>
<p id="4">
<name>BIlly</name>
<last>Green</last>
<state>FL</state>
</p>
<p id="5">
<name>Chucky</name>
<last>Fay</last>
<state>IL</state>
</p>
<m>
<r>
<w>1</w>
<l>2</l>
</r>
<r>
<w>1</w>
<l>2</l>
</r>
<r>
<w>3</w>
<l>2</l>
</r>
<r>
<w>1</w>
<l>3</l>
</r>
<r>
<w>4</w>
<l>3</l>
</r>
<r>
<w>2</w>
<l>4</l>
</r>
<r>
<w>1</w>
<l>5</l>
</r>
<r>
<w>2</w>
<l>5</l>
</r>
</m>
</g>


XSL
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="g">
<HTML>
<BODY>
<TABLE WIDTH="480" COLS="2" BORDER="1" CELLPADDING="4" CELLSPACING="0">
<TR>
<TD COLSPAN="2">Matches</TD>
</TR>
<TR>
<TD>Winner</TD>
<TD>Loser</TD>
</TR>

<xsl:for-each select="/g/m/r">
<TR>
<TD>
<xsl:value-of select="/g/p[@id=<xsl:value-of select="/g/m/r/w"/>]/name"/>&#xA0;
<xsl:value-of select="/g/p[@id=<xsl:value-of select="/g/m/r/w"/>]/last"/>&#xA0;
<xsl:value-of select="/g/p[@id=<xsl:value-of select="/g/m/r/w"/>]/state"/>
</TD>

<TD>
<xsl:value-of select="/g/p[@id=<xsl:value-of select="/g/m/r/l"/>]/name"/>&#xA0;
<xsl:value-of select="/g/p[@id=<xsl:value-of select="/g/m/r/l"/>]/last"/>&#xA0;
<xsl:value-of select="/g/p[@id=<xsl:value-of select="/g/m/r/l"/>]/state"/>
</TD>
</TR>
</xsl:for-each>

</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

I don't know how, thanks in advance for your help.