Query the Content Repository
Introduction
Goal
Test JCR queries by executing them directly in the Repository Servlet.
Supported Query Languages
Bloomreach Experience Manager's content repository supports the following query languages:
- XPath
- SQL
Repository Servlet
The repository provides a developer tool that can be used to experiment with querying the repository. This tool is commonly referred to as Repository Servlet and can be found at the following URL:
http://host:port/cms/repository
After you log in, you should see something similar to the following image.
If you log in as admin your query results may also contain get draft and unpublished document variants and document type prototypes.
XPath Specification
The best place to start to learn more about the syntax and capabilities of the XPath query language is actually the JCR version 1.0 specification. You can read it here, section 6.6 covers XPath.
XPath Examples
Below you find some example XPath queries.
-
Find all nodes of type hippo:document:
//element(*, hippo:document)
-
Find all nodes that have the property myproject:title with the value 'title':
//*[@myproject:title='title']
-
Find all nodes of type hippo:document that have the text 'title':
//element(*, hippo:document)[jcr:contains(., 'title')]
-
Find all nodes of type hippo:document that have the text 'title' in the property myproject:title:
//element(*, hippo:document)[jcr:contains(@myproject:title, 'title')]
-
Find all the children of a node with spaces. Use @hippo:paths with the UUID of the folder:
//*[@hippo:paths='48697750-446e-40be-a5fc-b20a19ab3f11']
-
Find all document types, except those that are in a specific folder "excludeme":
//element(*,hipposysedit:namespacefolder)/element(*,mix:referenceable)[not(jcr:contains(.,'excludeme'))]/element(*,hipposysedit:templatetype)/hipposysedit:prototypes/element(hipposysedit:prototype,hippo:document)
-
Find all published text documents and order them by their last modification date:
//element(*, myproject:textdocument)[hippostd:state = 'published' and hippostd:stateSummary = 'live'] order by @hippostdpubwf:lastModificationDate descending