On Fri, May 14, 2010 at 16:56, Rakesh Vidyadharan <[email protected]> wrote:
> Is it possible to filter based on parent node properties when executing an
> XPath query (JR 1.6). Let me explain the scenario that I have.
>
> We have a repository for all the books published by a press. Each book has
> child nodes that identify the various formats it has been published in (cloth
> bound, paperback, etc.) and are termed as distributions. All publication
> dates are associated with the distributions, since the book really has no
> publication date of its own. Each book may belong to an array of subjects,
> so the subjects are stored as a multi-value property in the book node.
>
> The structure is something along these lines
>
> /books
> /book
> /A (alphabetical index as well as keep node count under control)
> /bo<Database PK value> <-- represents each book
> /distribution <- Container node for the various distributions
> /di<Database PK value> <-- represents a published format of the book
>
> Example path for a distribution is:
> /books/book/T/bo5822950/distribution/di5822950
>
> I need to generate RSS feeds of the new books (based on dates at the
> distribution node) as well as subject specific RSS for new books. The XPath
> query for the new books is as follows:
>
> //*...@nodetype = 'di' and @date > xs:dateTime('2010-03-13T17:29:50.050Z')
> and @date <= xs:dateTime('2010-05-13T17:29:50.050Z') and @binding !=
> 'ec0214db-8bb2-4f23-a925-341cd98196f7'] order by @date descending
>
> Would it be possible in XPath to add some additional predicates to filter by
> subject at the book node level? I can iterate over the results and filter on
> parent.parent, but wondered if it is possible in the query.
Something like this should be possible:
/jcr:root/books/book/*[jcr:title= 'My Booktitle']//*...@nodetype = 'di'
and @date > xs:dateTime('2010-03-13T17:29:50.050Z') and @date <=
xs:dateTime('2010-05-13T17:29:50.050Z') and @binding !=
'ec0214db-8bb2-4f23-a925-341cd98196f7'] order by @date descending
Please note that path-based location steps (eg. the /books/book part)
are not indexed, so this query might be slower than your first one.
Regards,
Alex
--
Alexander Klimetschek
[email protected]