Difference between revisions of "XPath queries"
(3 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
== Examples == | == Examples == | ||
− | + | === Locked documents === | |
<source lang="xml"> | <source lang="xml"> | ||
//element(*, okm:document)[@jcr:lockOwner] | //element(*, okm:document)[@jcr:lockOwner] | ||
</source> | </source> | ||
− | + | === Locked documents by user therol === | |
<source lang="xml"> | <source lang="xml"> | ||
//element(*, okm:document)[@okm:author='therol'] | //element(*, okm:document)[@okm:author='therol'] | ||
</source> | </source> | ||
− | + | === Search documents by content === | |
<source lang="xml"> | <source lang="xml"> | ||
//element(*, okm:document)[jcr:contains(okm:content, 'linux')] | //element(*, okm:document)[jcr:contains(okm:content, 'linux')] | ||
</source> | </source> | ||
− | + | === Folders created by user potas === | |
<source lang="xml"> | <source lang="xml"> | ||
− | //element(*, okm:folder)[@okm:author=' | + | //element(*, okm:folder)[@okm:author='potas'] |
</source> | </source> | ||
− | + | === Example of complex query === | |
+ | Documents with content linux and keyword ubuntu: | ||
<source lang="xml"> | <source lang="xml"> | ||
//element(*,okm:document)[jcr:contains(okm:content,'linux') and jcr:contains(@okm:keywords,'ubuntu')] | //element(*,okm:document)[jcr:contains(okm:content,'linux') and jcr:contains(@okm:keywords,'ubuntu')] | ||
</source> | </source> | ||
− | + | === Dereference === | |
<source lang="xml"> | <source lang="xml"> | ||
//element(*, nt:linkedFile)/jcr:deref(@jcr:content, '*')[jcr:contains(., 'foo')] | //element(*, nt:linkedFile)/jcr:deref(@jcr:content, '*')[jcr:contains(., 'foo')] | ||
</source> | </source> | ||
− | Note | + | {{Note|In the examples we're making queries from repository root node, but really the queries might be done from /jcr:root/okm:root/ - that's the taxonomy node - for example the locked documents might be done as |
− | + | /jcr:root/okm:root//element(*, okm:document)[@jcr:lockOwner] | |
− | + | }} | |
== Type restrictions == | == Type restrictions == | ||
We can specify the type of node that query returns. Restrictions include inheritage all subtype are included as possible results. The function element is used to evaluate a node type. | We can specify the type of node that query returns. Restrictions include inheritage all subtype are included as possible results. The function element is used to evaluate a node type. | ||
− | + | === For example the node folders === | |
− | + | <source lang="xml"> | |
− | + | //element(*, okm:folder) | |
− | + | </source> | |
== Property restrictions == | == Property restrictions == | ||
Line 77: | Line 78: | ||
[[Category: Administration Guide]] | [[Category: Administration Guide]] | ||
− |
Latest revision as of 16:50, 11 December 2012
XPath, the XML Path Language, is a query language for selecting nodes from an XML document. In addition, XPath may be used to compute values (e.g., strings, numbers, or Boolean values) from the content of an XML document. XPath was defined by the World Wide Web Consortium (W3C).
You can learn more about XPATH at http://www.w3.org/TR/xpath20/.
Examples
Locked documents
//element(*, okm:document)[@jcr:lockOwner]
Locked documents by user therol
//element(*, okm:document)[@okm:author='therol']
Search documents by content
//element(*, okm:document)[jcr:contains(okm:content, 'linux')]
Folders created by user potas
//element(*, okm:folder)[@okm:author='potas']
Example of complex query
Documents with content linux and keyword ubuntu:
//element(*,okm:document)[jcr:contains(okm:content,'linux') and jcr:contains(@okm:keywords,'ubuntu')]
Dereference
//element(*, nt:linkedFile)/jcr:deref(@jcr:content, '*')[jcr:contains(., 'foo')]
Type restrictions
We can specify the type of node that query returns. Restrictions include inheritage all subtype are included as possible results. The function element is used to evaluate a node type.
For example the node folders
//element(*, okm:folder)
Property restrictions
A query can have property restrictions. The operators used are (=, !=, <, <=, >, >=) in addtion there's some extra operators like jcr:like() and jcr:contains().
Getting folders with author pito
//element(*, okm:folder)[@okm:author = 'pito']
Documents name starting with linux
//element(*, okm:document)[jcr:like(@okm:name, 'linux%')]
Documents with indexed content jackrabbit
//element(*, okm:resource)[jcr:contains(., 'jackrabbit')]/@jcr:path
Order
At ends query can be indicated the order of results.
Ordering by name
//element(*, okm:document)[@okm:keywords != ''] order by @okm:name
Usually is used jcr:score to ordering, that indicates de ranking of the results.