[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: If nodeset does NOT include

Subject: Re: If nodeset does NOT include
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Fri, 30 Aug 2002 18:45:13 +0100
xsl does not contain
Hi Brian,

>> I want to call a template only if a nodeset does
>> not contain a match for a variable, ie:
>> 
>> <xsl:if test="(.//InqInfo/Member_Id != $listfor)">
>>                         <xsl:call-template 
>> name="Recipbutton">
>> 
>> where != should mean "does not include"
>> I know it's a stupid question, but I can't see a 
>> simple, straightforward way to do this.
>
> != means "does not equal"--not quite the same thing. If you want to
> test if $listfor does not exist within Member_Id, you could try:
>
> <xsl:if test="not(contains(.//InqInfo/Member_Id,$listfor))">
>   <xsl:call-template name="Recipbutton"/>
> </xsl:if>
>
> (newbie post--please correct me as necessary!)

OK :) The contains() function tests whether the first argument string
contains the second argument string. For example:

  contains('foobar', 'ob')

would be true.

What Thomas was wanting to do, I believe, is to see whether any of the
Member_Id elements in the document contain the value $listfor, and if
not then call the Recipbutton template. In other words, he wants to
test whether any of the nodes in the node set have a value that is
*equal to* $listfor. Contains() doesn't do that. He needs:

  <xsl:if test="not(.//InqInfo/Member_Id = $listfor)">
    <xsl:call-template name="Recipbutton" />
  </xsl:if>

I think.

When you pass a node set to a function that wants a string, the node
set is converted to a string by taking the value of the first node in
the node set. So your suggestion of:

  not(contains(.//InqInfo/Member_Id, $listfor))

would actually return true if the first Member_Id didn't contain the
value of the $listfor variable, and false otherwise.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.