xsl-list
[Top] [All Lists]

Predicates using current node-set

2002-10-02 02:26:41
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[(_at_)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



<Prev in Thread] Current Thread [Next in Thread>