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?

···

--
R. Mark Volkmann
Partner, Object Computing, Inc.

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 1/26/06, Mark Volkmann <r.mark.volkmann@gmail.com> wrote:

There is no "evaluate" method and the "first" and "match" methods don't do this.

Is this supported?

--
R. Mark Volkmann
Partner, Object Computing, Inc.

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 Jan 26, 2006, at 8:18 PM, Mark Volkmann wrote:

On 1/26/06, Mark Volkmann <r.mark.volkmann@gmail.com> 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)')

--
~akk

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.

···

On 1/27/06, Adam Keys <adam@therealadam.com> wrote:

On Jan 26, 2006, at 8:18 PM, Mark Volkmann wrote:
> On 1/26/06, Mark Volkmann <r.mark.volkmann@gmail.com> 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)')
>

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.

--
R. Mark Volkmann
Partner, Object Computing, Inc.