Ard Schrijvers wrote:
Is this how it should work?

I am not sure wether this is according specs. Anybody else?

the spec does not clearly specify how multi-valued properties are handled in a jcr:contains() function. it even says that jcr:contains() on a property is optional.

I don't think we can or should change the current behaviour. as a workaround I suggest to use individual nodes for authors. e.g. using infamous same-name siblings:

/books/addison-wesley/1995/design-patterns/author[1]/name = 'Erich Gamma'
/books/addison-wesley/1995/design-patterns/author[2]/name = 'Richard Helm'
/books/addison-wesley/1995/design-patterns/author[3]/name = 'Ralph E. Johnson'

the following query will not return results:

//element(my:book, )[jcr:contains(author/@name, 'erich helm')]

or without using SNS:

/books/addison-wesley/1995/design-patterns/authors/gamma/name = 'Erich Gamma'
/books/addison-wesley/1995/design-patterns/authors/helm/name = 'Richard Helm'
/books/addison-wesley/1995/design-patterns/authors/johnson/name = 'Ralph E. 
Johnson'

you would then have the following query:

//element(my:book, )[jcr:contains(authors/*/@name, 'erich helm')]

regards
 marcel

Reply via email to