Subject: Re: Selecting a node based on two sub-element values
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 15 Feb 2005 15:58:45 GMT
|
Michael Kay writes:
> >
> > <xsl:if test="*[1]/VALUE/text() = 'AA'
>
> It's rarely a good idea to use /text() in this kind of comparison: better to
> compare the value of the element itself:
>
> test="*[1]/VALUE = 'AA'
Can I then infer that I should refactor this test expression
org_list/org_code[@type='APPR' and text()='ANSI']
to
org_list[org_code@type='APPR' and org_code='ANSI']
Thanks,
--
Kevin Rodgers
well it should be org_code/@type='APPR' or course not
org_code@type='APPR' but that isn't equivalent (in general) it searches
for org_code twice and it might return different nodes, ie the attribute
might not be on the child with value ANSI of course you may have a dtd
or schema that ensures there is only one org_code child in this
particular case.
You can do
org_list/org_code[@type='APPR' and .='ANSI']
using . rather than text()
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
|