tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Ross" <rr...@stupendousman.com>
Subject Re: * in XPath predicate
Date Wed, 06 Aug 2003 19:50:17 GMT
Ok, It all boils down to this:
Using a string variable in a select predicate results in a properly escaped
xpath statement.

<c:set var="pred" value="clerk" />
<x:forEach select="$doc//employee[role=$pred]" >

results in a select like "$doc//employee[role='clerk']" which is fine.

BUT there is no way to specify wildcards like *.

<c:set var="pred" value="*" />
<x:forEach select="$doc//employee[role=$pred]" >

appears to result in a select like "$doc//employee[role='*']" which is not
correct.

I've dug through the archives and this is not found, nor any clear mention
in the spec.  It smells like a valid bug/missing but necessary feature.
I'll give it a couple of days before I log something.  Just in case.

R

----- Original Message -----
From: "Rick Ross" <rross@stupendousman.com>
To: <taglibs-user@jakarta.apache.org>
Sent: Wednesday, August 06, 2003 11:25 AM
Subject: Re: * in XPath predicate


> Hmmm..   Well the thing is that * is just one of the possible conditions.
> Normally, I get a string literal I use to filter out employees.   That
part
> works fine, but when the string is *, I don't get any nodes despite the
fact
> that should produce valid XPath.
>
> This also fails, but this time I get all of the nodes, without regard to
the
> predicate.
>
> <c:set var="predicate" value="role='Bus' " />
> <x:forEach select="$doc//employee[$predicate]" >
>
> This fails:
>
> <c:set var="predicate" value="Bus" />
> <x:forEach select="$doc//employee[role=$predicate]" >
>
>
> P.S.  I've tried every combo of escaped ticks I can think of.
>
>
> R
>
>
> >
> > ----- Original Message -----
> > From: "Siggelkow, Bill" <bill.siggelkow@mirant.com>
> > To: "'Tag Libraries Users List'" <taglibs-user@jakarta.apache.org>
> > Sent: Wednesday, August 06, 2003 9:12 AM
> > Subject: RE: * in XPath predicate
> >
> >
> > > Maybe try the count() function as in -- this should give you all
> employees
> > that have at least one role child element.
> > >
> > > <x:forEach select="$doc//employee[count(role)]" >
> > >
> > > -----Original Message-----
> > > From: Rick Ross [mailto:rross@stupendousman.com]
> > > Sent: Wednesday, August 06, 2003 12:10 PM
> > > To: taglibs-user@jakarta.apache.org
> > > Subject: Fw: * in XPath predicate
> > >
> > >
> > >
> > > Good morning all,
> > >
> > > I am trying to generate my xpath statement based on parameters, and I
> find
> > that it works perfectly with the exception that the * in the predicate
> fails
> > when dynamically populated, although it works fine when hardcoded.
> > >
> > > So this will work:
> > > <x:forEach select="$doc//employee[role=*]" >
> > >
> > > But this will not:
> > >
> > > <c:set var="roleName" value="*" />
> > > <x:forEach select="$doc//employee[role=$roleName]" >
> > >   .....
> > >
> > >
> > > I'm guessing that the * gets tick marks ( ' ) when it is processed.
> Any
> > thoughts?
> > >
> > > Thanks,
> > >
> > >
> > > Rick
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
> > >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
>


Mime
View raw message