Hi,
with the current jackrabbit version you can only match the exact name of a node:
//*[fn:name() = 'foo' or fn:name() = 'bar']
however, JSR 283 defines a NodeLocalName operand that you can use in any
comparison that takes a string operand. e.g. comparison using LIKE operator.
jackrabbit trunk partially implements those new features already. for example
code see:
http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/qom/NodeLocalNameTest.java
regards
marcel
Cédric Chantepie wrote:
> I'm trying to be able to find node, with xpath (or SQL), whose node name
> contains searched expression.
>
> For example, with following nodes :
> /software/
> /software/firefox
> /software/sunbird
> /software/thunderbird
>
> ... I'd like to be able to find sunbird and thunderbird with a xpath
> query like :
> //*[jcr:contains(X, '*bird') ;
>
> I've tried "fn:name()" as X but I get an InvalidQueryException
> ("Unsupported function", probably because of fn:name() nested in
> jcr:contains()),
> I've tried "." as X but I doesn't find anything.
>
> In fact it only work if I substitute X by a property name, but I don't
> know any implicit (auto-created or pseudo one) property contains node
> node (or node path).
>
> So finally, is there any way to do such query with a standard jackrabbit
> configuration ?
> If not is there any "easy" way to define an auto-created property
> containing node name (so I can search for this property) ? or is there
> any way to add pseudo property to index by extending SearchIndex (I
> don't think so as it work on NodeState which doesn't have node name) ?
>
> Thanks for any help,
> Cédric
>
>
|