REXML and XPath

The documentation for REXML says is has full XPath 1.0 support.
However, I can’t see a way to get the XPath class to return values
other than nodes. For example, if I have an XML document that contains
“book” elements, I should be able to do something like this.

count = XPath.evaluate(doc, count(’//book’))

There is no “evaluate” method and the “first” and “match” methods don’t
do this.

Is this supported?

On 1/26/06, Mark V. [email protected] wrote:

The documentation for REXML says is has full XPath 1.0 support.
However, I can’t see a way to get the XPath class to return values
other than nodes. For example, if I have an XML document that contains
“book” elements, I should be able to do something like this.

count = XPath.evaluate(doc, count(’//book’))

Minor syntax correction here,

count = XPath.evaluate(doc, ‘count(//book)’)

On Jan 26, 2006, at 8:18 PM, Mark V. wrote:

count = XPath.evaluate(doc, ‘count(//book)’)

As a work-around, you could try this:

count = XPath.match(doc, ‘//book’).length

REXML may just support XPath’s selection syntax and not the pseudo-
function-things like you’re trying to use above.

On 1/27/06, Adam K. [email protected] wrote:

Minor syntax correction here,

count = XPath.evaluate(doc, ‘count(//book)’)

As a work-around, you could try this:

count = XPath.match(doc, ‘//book’).length

REXML may just support XPath’s selection syntax and not the pseudo-
function-things like you’re trying to use above.

I found out that it does support what I wanted which is XPath
expressions that result in a number, string or boolean. You need to
use the XPath.first method for those.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs