[xsl] Predicates using current node-set

Subject: [xsl] Predicates using current node-set
From: "Nordström, Jonas" <Jonas.Nordstrom@xxxxxxxxxx>
Date: Wed, 2 Oct 2002 11:26:41 +0200
I have a problem using predicate expressions where I compare an attribute in
the node-set to an attribute in the "current node-set". I have problems
explaing this, so here's an example:

xml file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="paytest.xsl"?>
<payments>
	<oldpayments>
		<oldpayment payno="1" amount="100" ref="a" />
		<oldpayment payno="2" amount="200" ref="b" />
		<oldpayment payno="3" amount="300" ref="c" />
	</oldpayments>
	<newpayments>
		<newpayment Payno="3" amount="300" />
		<newpayment Payno="4" amount="300" />
	</newpayments>
</payments>

xsl file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="html"/>

<xsl:template match="/">
<html>
<head><title>test</title></head>
<body>
<xsl:apply-templates select="/payments/newpayments/newpayment" />
</body>
</html>
</xsl:template>

<xsl:template match="/payments/newpayments/newpayment">
	Payno: <xsl:value-of select="@Payno"/> 
	Amount: <xsl:value-of select="@amount"/>
	<xsl:if test="/payments/oldpayments/oldpayment/@payno = @Payno">
		Ref: <xsl:value-of
select="/payments/oldpayments/oldpayment[@payno=@Payno]/@ref"/>
	</xsl:if>
	<br/>
</xsl:template>

Result in browser:
Payno: 3 Amount: 300 Ref: 
Payno: 4 Amount: 300

I wanted the "ref" attribute to be printed, but I cant work out how to match
the oldpayment payno with the newpayment Payno


Vendor: Microsoft
Vendor URL: http://www.microsoft.com

Jonas Nordstrom
Sigma Exallon AB

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


Current Thread