You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ca...@apache.org on 2018/02/09 16:38:23 UTC

svn commit: r1823679 - in /jackrabbit/site/live/oak/docs: css/site.css query/grammar-xpath.html

Author: catholicon
Date: Fri Feb  9 16:38:23 2018
New Revision: 1823679

URL: http://svn.apache.org/viewvc?rev=1823679&view=rev
Log:
OAK-5051: Document XPath (and SQL-2) syntax as supported by Oak


Modified:
    jackrabbit/site/live/oak/docs/css/site.css
    jackrabbit/site/live/oak/docs/query/grammar-xpath.html

Modified: jackrabbit/site/live/oak/docs/css/site.css
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/css/site.css?rev=1823679&r1=1823678&r2=1823679&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/css/site.css (original)
+++ jackrabbit/site/live/oak/docs/css/site.css Fri Feb  9 16:38:23 2018
@@ -21,4 +21,127 @@ tt {
 }
 pre {
 	font-size: 12px;
-}
\ No newline at end of file
+}
+
+/* fluido skin moves to small-screen-statically-positioned top-nav below 980px */
+@media(min-width:980px) {
+    div[id="bodyColumn"] h1 > a[name],
+    div[id="bodyColumn"] h2 > a[name],
+    div[id="bodyColumn"] h3 > a[name],
+    div[id="bodyColumn"] h4 > a[name] {
+        visibility: hidden;
+        content: "";
+        display: block;
+
+        /* 42px is how layout showed as top-nav height.*/
+        margin: -42px 0 0 0;
+        height: 42px;
+    }
+}
+
+/* begin grammar railroad styling*/
+.railroad {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+}
+
+.c {
+    padding: 1px 3px;
+    margin: 0px 0px;
+    border: 2px solid;
+    -moz-border-radius: 0.4em;
+    -webkit-border-radius: 0.4em;
+    -khtml-border-radius: 0.4em;
+    border-radius: 0.4em;
+    background-color: #fff;
+    color: black;
+    font-size: 14px;
+}
+
+.ts {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-ts.png);
+    background-size: 16px 512px;
+}
+
+.ls {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-ls.png);
+    background-size: 16px 512px;
+}
+
+.ks {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-ks.png);
+    background-size: 16px 512px;
+}
+
+.te {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-te.png);
+    background-size: 16px 512px;
+}
+
+.le {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-le.png);
+    background-size: 16px 512px;
+}
+
+.ke {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-ke.png);
+    background-size: 16px 512px;
+}
+
+.d {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    border-collapse: collapse;
+    vertical-align: top;
+    min-width: 16px;
+    height: 24px;
+    background-image: url(../img/railroad/div-d.png);
+    background-size: 1024px 512px;
+}
+/* end grammar railroad styling*/
\ No newline at end of file

Modified: jackrabbit/site/live/oak/docs/query/grammar-xpath.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/query/grammar-xpath.html?rev=1823679&r1=1823678&r2=1823679&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/query/grammar-xpath.html (original)
+++ jackrabbit/site/live/oak/docs/query/grammar-xpath.html Fri Feb  9 16:38:23 2018
@@ -1,15 +1,15 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-08 
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-09 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180208" />
+    <meta name="Date-Revision-yyyymmdd" content="20180209" />
     <meta http-equiv="Content-Language" content="en" />
-    <title>Jackrabbit Oak &#x2013; Oak XPath Query Grammar</title>
+    <title>Jackrabbit Oak &#x2013; Oak XPath Query Grammar - Oak Documentation</title>
     <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
     <link rel="stylesheet" href="../css/site.css" />
     <link rel="stylesheet" href="../css/print.css" media="print" />
@@ -95,6 +95,7 @@
             <li><a href="../migration.html" title="Migration">Migration</a></li>
             <li><a href="../differences.html" title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a></li>
             <li><a href="../known_issues.html" title="Known Issues">Known Issues</a></li>
+            <li><a href="../constraints.html" title="Constraints">Constraints</a></li>
             <li><a href="../dos_and_donts.html" title="Dos and Don'ts">Dos and Don'ts</a></li>
             <li><a href="../coldstandby/coldstandby.html" title="Cold Standby">Cold Standby</a></li>
             <li><a href="../FAQ.html" title="FAQ">FAQ</a></li>
@@ -135,7 +136,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-02-08<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-02-09<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -195,6 +196,7 @@
     <li><a href="../migration.html" title="Migration"><span class="none"></span>Migration</a>  </li>
     <li><a href="../differences.html" title="Differences to Jackrabbit 2"><span class="none"></span>Differences to Jackrabbit 2</a>  </li>
     <li><a href="../known_issues.html" title="Known Issues"><span class="none"></span>Known Issues</a>  </li>
+    <li><a href="../constraints.html" title="Constraints"><span class="none"></span>Constraints</a>  </li>
     <li><a href="../dos_and_donts.html" title="Dos and Don'ts"><span class="none"></span>Dos and Don'ts</a>  </li>
     <li><a href="../coldstandby/coldstandby.html" title="Cold Standby"><span class="none"></span>Cold Standby</a>  </li>
     <li><a href="../FAQ.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
@@ -239,48 +241,51 @@
    See the License for the specific language governing permissions and
    limitations under the License.
   --><div class="section">
-<h2><a name="Oak_XPath_Query_Grammar"></a>Oak XPath Query Grammar</h2>
+<h2><a name="Oak_XPath_Query_Grammar_-_Oak_Documentation"></a>Oak XPath Query Grammar - Oak Documentation</h2>
 
 <ul>
   
-<li><a href="#query">Query</a></li>
+<li>
+  <a href="#query">Query</a></li>
   
-<li><a href="#filter">Filter</a></li>
+<li>
+  <a href="#filter">Filter</a></li>
   
-<li><a href="#column">Column</a></li>
+<li>
+  <a href="#column">Column</a></li>
   
-<li><a href="#constraint">Constraint</a></li>
+<li>
+  <a href="#constraint">Constraint</a></li>
   
-<li><a href="#andCondition">And Condition</a></li>
+<li>
+  <a href="#and_condition">And Condition</a></li>
   
-<li><a href="#condition">Condition</a></li>
+<li>
+  <a href="#condition">Condition</a></li>
   
-<li><a href="#comparison">Comparison</a></li>
+<li>
+  <a href="#comparison">Comparison</a></li>
   
-<li><a href="#staticOperand">Static Operand</a></li>
+<li>
+  <a href="#static_operand">Static Operand</a></li>
   
-<li><a href="#ordering">Ordering</a></li>
+<li>
+  <a href="#ordering">Ordering</a></li>
   
-<li><a href="#dynamicOperand">Dynamic Operand</a></li>
+<li>
+  <a href="#dynamic_operand">Dynamic Operand</a></li>
   
-<li><a href="#options">Options</a></li>
+<li>
+  <a href="#options">Options</a></li>
   
-<li><a href="#explain">Explain</a></li>
+<li>
+  <a href="#explain">Explain</a></li>
   
-<li><a href="#measure">Measure</a></li>
+<li>
+  <a href="#measure">Measure</a></li>
 </ul>
 <hr />
-
-<div class="section" id="query">
-<h3 id="query">Query</h3>
-
-<div class="section">
-<h4><a name="ajcr:root__filter__...______column___...______order_by__ordering___..._____queryOptions_"></a>
-/jcr:root { <a href="#filter">filter</a> [ ... ] } }
-<br /> [ ( <a href="#column">column</a> [ | ... ] } ) ]
-<br /> [ order by { <a href="#ordering">ordering</a> [ , ... ] } ]
-<br /> [ <a href="#options">queryOptions</a> ]
-</h4>
+<h2><a name="query"></a>Query</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c">/jcr:root <a href="#filter">filter</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">...</code></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">( <a href="#column">column</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">| ...</code></td></tr></t
 able></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">order by <a href="#ordering">ordering</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">, ...</code></td></tr></table></td><td class="le"></td></tr></table></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad">
 <td class="ls"></td><td class="d"><code class="c"><a href="#options">queryOptions</a></code></td><td class="le"></td></tr></table></td></tr></table>
 <p>The &#x201c;/jcr:root&#x201d; means the root node. It is recommended that all XPath queries start with this term.</p>
 <p>All queries should have a path restriction (even if it&#x2019;s just, for example, &#x201c;/content&#x201d;), as this allows to shrink indexes.</p>
 <p>&#x201c;order by&#x201d; may use an index. If there is no index for the given sort order, then the result is fully read in memory and sorted before returning the first row.</p>
@@ -302,20 +307,7 @@
 <div class="source"><pre class="prettyprint">/jcr:root/etc//*[@type='report'] option(traversal fail)
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="filter">
-<h3 id="filter">Filter</h3>
-
-<div class="section">
-<h4><a name="a_directChildNodeFilter___descendantNodeFilter____element____nodeName___nodeType___text___constraint____filter__unionFilter_..._"></a>
-/ <a href="#filter">directChildNodeFilter</a>
-<br /> | // <a href="#filter">descendantNodeFilter</a>
-<br /> | *
-<br /> | element( [ * | nodeName ] [, nodeType] )
-<br /> | text()
-<br /> | '[' <a href="#constraint">constraint</a> ']'
-<br /> | ( filter '|' unionFilter [...] )
-</h4>
+<h2><a name="filter"></a>Filter</h2><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">/ <a href="#filter">directChildNodeFilter</a></code></td></tr></table></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">/ / <a href="#filter">descendantNodeFilter</a></code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><code class="c">*</code></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">element (</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr clas
 s="railroad"><td class="ts"></td><td class="d"><code class="c">*</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c"><a href="#name">nodeName</a></code></td><td class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">, <a href="#type">nodeType</a></code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><code class="c">text()</code></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">[ <a href="#constraint
 ">constraint</a> ]</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">( <a href="#filter">filter</a> | <a href="#filter">unionFilter</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="le"></td></tr></table>
 <p>A single slash means filtering on a specific child node, while two slashes means filtering on a descendant node.</p>
 <p>&#x201c;*&#x201d; means any node name, and any node type.</p>
 <p>&#x201c;text()&#x201d; is a shortcut for &#x201c;jcr:xmltext&#x201d;. It is supported only for compatibility.</p>
@@ -362,17 +354,7 @@
 <div class="source"><pre class="prettyprint">/jcr:root/(libs | etc)//*[@jcr:uuid and @jcr:mimeType = 'text/css']
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="column">
-<h3 id="column">Column</h3>
-
-<div class="section">
-<h4><a name="rep:excerpt_.___relativePath___propertyName_____rep:spellcheck__rep:suggest_.___rep:facet___relativePath___propertyName_"></a>
-rep:excerpt( [. | [ relativePath / ] @propertyName ]  )
-<br /> | rep:spellcheck()
-<br /> | rep:suggest( [.] )
-<br /> | rep:facet ( [ relativePath / ] @propertyName )
-</h4>
+<h2><a name="column"></a>Column</h2><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:excerpt (</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">.</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#path">relativePath</a> /</code></td></tr></table></td><td class="le"></td></tr></table></td><td 
 class="d"><code class="c"><a href="#name">@propertyName</a></code></td></tr></table></td><td class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:spellcheck ( )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:suggest (</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">.</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class=
 "d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:facet (</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#path">relativePath</a> /</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="#name">@propertyName</a> )</code></td></tr></table></td><td class="le"></td></tr></table>
 <p>&#x201c;rep:excerpt&#x201d;: include the excerpt in the result. Since Oak version 1.8.1, optionally a property name can be specified. See <a href="query-engine.html#Excerpts_and_Highlighting">Excerpts and Highlighting</a>.</p>
 <p>&#x201c;rep:spellcheck&#x201d;: Include the spellcheck in the result. See <a href="query-engine.html#Spellchecking">Spellchecking</a>.</p>
 <p>&#x201c;rep:suggest&#x201d;: include suggestions in the result. See <a href="query-engine.html#Suggestions">Suggestions</a>.</p>
@@ -389,14 +371,7 @@ rep:excerpt( [. | [ relativePath / ] @pr
 /jcr:root/content//*[jcr:contains(@jcr:title, 'oak')]/(rep:facet(@tags))
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="constraint">
-<h3 id="constraint">Constraint</h3>
-
-<div class="section">
-<h4><a name="andCondition___or_andCondition__..._"></a>
-<a href="#andCondition">andCondition</a> [ { or <a href="#andCondition">andCondition</a> } [...] ]
-</h4>
+<h2><a name="constraint"></a>Constraint</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#and_condition">andCondition</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">or <a href="#and_condition">andCondition</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">...</code></td><td class="le"></td></tr></table></td></tr></table></td><td class="le"></td></tr></table></td></tr></table>
 <p>&#x201c;or&#x201d; conditions of the form &#x201c;@x = 1 or @x = 2&#x201d; can use the same index.</p>
 <p>&#x201c;or&#x201d; conditions of the form &#x201c;@x = 1 or @y = 2&#x201d; are more complicated. Oak will convert them to a &#x201c;union&#x201d; query (one query with @x = 1, and a second query with @y = 2).</p>
 <p>Examples:</p>
@@ -406,14 +381,7 @@ rep:excerpt( [. | [ relativePath / ] @pr
 <div class="source"><pre class="prettyprint">/jcr:root/content/dam/*[@hidden='hidden-folder' or not(@hidden)]
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="andCondition">
-<h3 id="andCondition">And Condition</h3>
-
-<div class="section">
-<h4><a name="condition___and_condition__..._"></a>
-<a href="#condition">condition</a> [ { and <a href="#condition">condition</a> } [...] ]
-</h4>
+<h2><a name="and_condition"></a>And Condition</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#condition">condition</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">and <a href="#condition">condition</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">...</code></td><td class="le"></td></tr></table></td></tr></table></td><td class="le"></td></tr></table></td></tr></table>
 <p>A special case (not found in relational databases) is &#x201c;and&#x201d; conditions of the form &#x201c;@x = 1 and @x = 2&#x201d;. They will match nodes with multi-valued properties, where the property value contains both 1 and 2.</p>
 <p>Examples:</p>
 
@@ -421,23 +389,7 @@ rep:excerpt( [. | [ relativePath / ] @pr
 <div class="source"><pre class="prettyprint">/jcr:root/home//element(*, rep:Authorizable)[@rep:principalName != 'Joe' and @rep:principalName != 'Steve']
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="condition">
-<h3 id="condition">Condition</h3>
-
-<div class="section">
-<h4><a name="comparison_inComparison____fn:not__not__constraint___constraint___jcr:contains___property__.____fulltextSearchExpression___jcr:like_dynamicOperand__staticOperand___rep:similar__propertyName__staticOperand___rep:native__language__staticOperand___rep:spellcheck__staticOperand___rep:suggest__staticOperand_"></a>
-<a href="#comparison">comparison</a>
-<br /> <a href="#inComparison">inComparison</a>
-<br /> | [ [ fn:not | not ] (<a href="#constraint">constraint</a>)
-<br /> | ( <a href="#constraint">constraint</a> )
-<br /> | jcr:contains( [ { property | . } , ] fulltextSearchExpression )
-<br /> | jcr:like( dynamicOperand , staticOperand )
-<br /> | rep:similar ( propertyName , staticOperand )
-<br /> | rep:native ( language , staticOperand )
-<br /> | rep:spellcheck ( staticOperand )
-<br /> | rep:suggest ( staticOperand )
-</h4>
+<h2><a name="condition"></a>Condition</h2><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#comparison">comparison</a> <a href="#comparison">inComparison</a></code></td></tr></table></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">fn:not</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">not</code></td><td class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c">( <a href="#constraint">constraint</a> )</code></td></tr>
 </table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">( <a href="#constraint">constraint</a> )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">jcr:contains (</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c"><a href="#name">propertyName</a></code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">.</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">,</code></td></tr><
 /table></td><td class="le"></td></tr></table></td><td class="d"><code class="c">fulltextSearchExpression )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">jcr:like ( <a href="#dynamic_operand">dynamicOperand</a> , <a href="#static_operand">staticOperand</a> )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:similar ( <a href="#name">propertyName</a> , <a href="#static_operand">staticOperand</a> )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:native ( <a href="#name">languageName</a> , <a href="#static_operand">staticOperand</a> )</code></td></tr></table></td><td class="ke">
 </td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:spellcheck ( <a href="#static_operand">staticOperand</a> )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">rep:suggest ( <a href="#static_operand">staticOperand</a> )</code></td></tr></table></td><td class="le"></td></tr></table>
 <p>&#x201c;fn:not&#x201d;: this is used for both &#x201c;is not null&#x201d;, and for nested conditions. For example &#x201c;fn:not(@status)&#x201d; means nodes where this property is not set. In this case, and index can be used, but it is relatively expensive to index all nodes that don&#x2019;t have a certain property. It is recommended to only index this if there are relatively view nodes with this nodetype. See also <a href="lucene.html">nullCheckEnabled</a>. Nested conditions, for example &#x201c;fn:not(@status = &#x2018;x&#x2019; and @color = &#x2018;red&#x2019;)&#x201d;, can not typically use an index.</p>
 <p>&#x201c;jcr:contains&#x201d;: see <a href="query-engine.html#Full-Text_Queries">Full-Text Queries</a>.</p>
 <p>&#x201c;jcr:like&#x201d;: the wildcards characters are _ (any one character) and % (any characters). An index is used, except if the operand starts with a wildcard. To search for the characters % and _, the characters need to be escaped using \ (backslash).</p>
@@ -453,16 +405,7 @@ rep:excerpt( [. | [ relativePath / ] @pr
 /jcr:root/content//element(*, cq:Page)[@offTime &gt; xs:dateTime('2020-12-01T20:00:00.000') or @onTime &gt; xs:dateTime('2020-12-01T20:00:00.000')]
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="comparison">
-<h3 id="comparison">Comparison</h3>
-
-<div class="section">
-<h4><a name="dynamicOperand________________staticOperand"></a>
-<a href="#dynamicOperand">dynamicOperand</a> 
-{ = | &lt;&gt; | != | &lt; | &lt;= | &gt; | &gt;= } 
-<a href="#staticOperand">staticOperand</a>
-</h4>
+<h2><a name="comparison"></a>Comparison</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#dynamic_operand">dynamicOperand</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">=</code></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">&lt; &gt;</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">! =</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><code class="c">&lt;</code></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">&lt; =</code></td></tr></table></td><td class="ke"
 ></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><code class="c">&gt;</code></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">&gt; =</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="#static_operand">staticOperand</a></code></td></tr></table>
 <p>Comparison using &lt;, &gt;, &gt;=, and &lt;= can use an index if the property in the index is ordered.</p>
 <p>Examples:</p>
 
@@ -471,19 +414,7 @@ rep:excerpt( [. | [ relativePath / ] @pr
 @offTime &gt; xs:dateTime('2020-12-01T20:00:00.000')
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="staticOperand">
-<h3 id="staticOperand">Static Operand</h3>
-
-<div class="section">
-<h4><a name="textLiteral___bindVariableName_____-__numberLiteral__true_____false_____xs:dateTime__literal_"></a>
-textLiteral
-<br /> | $ bindVariableName
-<br /> | [ + | - ] numberLiteral
-<br /> | true [ () ]
-<br /> | false [ () ]
-<br /> | xs:dateTime ( literal )
-</h4>
+<h2><a name="static_operand"></a>Static Operand</h2><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c"><a href="#literal">textLiteral</a></code></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">$ <a href="#name">bindVariableName</a></code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">+</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">-</code></td><td class="le"></td></tr></table></td><td class="le"></
 td></tr></table></td><td class="d"><code class="c"><a href="#number_literal">numberLiteral</a></code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">true</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">( )</code></td></tr></table></td><td class="le"></td></tr></table></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">false</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d
 "><table class="railroad"><tr class="railroad"><td class="d"><code class="c">( )</code></td></tr></table></td><td class="le"></td></tr></table></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">xs:dateTime ( <a href="#literal">literal</a> )</code></td></tr></table></td><td class="le"></td></tr></table>
 <p>A string (text) literal starts and ends with a single quote. Two single quotes can be used to create a single quote inside a string.</p>
 <p>Examples:</p>
 
@@ -496,14 +427,7 @@ false
 xs:dateTime('2020-12-01T20:00:00.000')
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="ordering">
-<h3 id="ordering">Ordering</h3>
-
-<div class="section">
-<h4><a name="dynamicOperand__ascending__descending_"></a>
-<a href="#dynamicOperand">dynamicOperand</a> [ ascending | descending ]
-</h4>
+<h2><a name="ordering"></a>Ordering</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#dynamic_operand">dynamicOperand</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">ascending</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">descending</code></td><td class="le"></td></tr></table></td><td class="le"></td></tr></table></td></tr></table>
 <p>Ordering by an indexed property will use that index if possible. If there is no index that can be used for the given sort order, then the result is fully read in memory and sorted there.</p>
 <p>As a special case, sorting by &#x201c;jcr:score&#x201d; in descending order is ignored (removed from the list), as this is what the fulltext index does anyway (and if no fulltext index is used, then the score doesn&#x2019;t apply). If for some reason you want to enforce sorting by &#x201c;jcr:score&#x201d;, then you can use the workaround to order by &#x201c;fn:lowercase(@jcr:score) descending&#x201d;.</p>
 <p>Examples:</p>
@@ -512,19 +436,7 @@ xs:dateTime('2020-12-01T20:00:00.000')
 <div class="source"><pre class="prettyprint">order by @jcr:created descending
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="dynamicOperand">
-<h3 id="dynamicOperand">Dynamic Operand</h3>
-
-<div class="section">
-<h4><a name="a_relativePath____propertyName______fn:string-length__dynamicOperand______fn:name__fn:local-name____._____jcr:score______fn:lower-case__fn:upper-case___dynamicOperand____fn:coalesce__dynamicOperand1_dynamicOperand2_"></a>
-[ relativePath / ] { @propertyName | * }
-<br />  | fn:string-length ( dynamicOperand  )
-<br />  | { fn:name | fn:local-name } ( [ . ] )
-<br />  | jcr:score ( )
-<br />  | { fn:lower-case | fn:upper-case } ( dynamicOperand )
-<br />  | fn:coalesce ( dynamicOperand1, dynamicOperand2 )
-</h4>
+<h2><a name="dynamic_operand"></a>Dynamic Operand</h2><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a href="#path">relativePath</a> /</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c"><a href="#name">@propertyName</a></code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">*</code></td><td class="le"></td></tr></table></td></tr></table></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d">
 <code class="c">fn:string-length ( <a href="#dynamic_operand">dynamicOperand</a> )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">fn:name</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">fn:local-name</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">(</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">.</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="rai
 lroad"><td class="d"><code class="c">jcr:score ( )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">fn:lower-case</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">fn:upper-case</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">( <a href="#dynamic_operand">dynamicOperand</a> )</code></td></tr></table></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">fn:coalesce ( <a href="#dynamic_operand">firstDynamicOperand</a> , <a href="#dynamic_operand">secondDynamicOperand</a> )</code></td></tr></table></td><td class="le"></td></tr></table>
 <p>The &#x201c;*&#x201d; stands for any property.</p>
 <p>&#x201c;jcr:score()&#x201d; is the score returned by the index.</p>
 <p>&#x201c;fn:coalesce&#x201d;: this returns the first operand if it is not null, and the second operand otherwise. <tt>@since Oak 1.8</tt></p>
@@ -542,17 +454,7 @@ fn:lower-case(@lastName)
 fn:coalesce(@lastName, @name)
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="options">
-<h3 id="options">Options</h3>
-
-<div class="section">
-<h4><a name="option___traversal__ok__warn__fail__default____index_tag_tagName_____...__"></a>
-option( { 
-<br />&#160;&#160; traversal { ok | warn | fail | default } | 
-<br />&#160;&#160; index tag tagName 
-<br /> } [ , ... ] )
-</h4>
+<h2><a name="options"></a>Options</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c">option (</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">traversal</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">ok</code></td><td class="te"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><code class="c">warn</code></td><td class="ke"></td></tr><tr class="railroad"><td class="ks"></td><td class="d"><code class="c">fail</code></td><td class="ke"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">default</code></td><td class="le"></td></tr></table></td></tr></table></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">in
 dex tag <a href="#name">tagName</a></code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">, ...</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table>
 <p>&#x201c;traversal&#x201d;: by default, queries without index will log a warning, except if the configuration option <tt>QueryEngineSettings.failTraversal</tt> is changed The traversal option can be used to change the behavior of the given query: &#x201c;ok&#x201d; to not log a warning, &#x201c;warn&#x201d; to log a warning, &#x201c;fail&#x201d; to fail the query, and &#x201c;default&#x201d; to use the default setting.</p>
 <p>&#x201c;index tag&#x201d;: by default, queries will use the index with the lowest expected cost (as in relational databases). To only consider some of the indexes, add tags (a multi-valued String property) to the index(es) of choice, and specify this tag in the query.</p>
 <p>Examples:</p>
@@ -561,14 +463,7 @@ option( {
 <div class="source"><pre class="prettyprint">option(traversal fail)
 </pre></div></div>
 <hr />
-</div></div>
-<div class="section" id="explain">
-<h3 id="explain">Explain Query</h3>
-
-<div class="section">
-<h4><a name="explain_measure__query_"></a>
-explain [measure] { <a href="#query">query</a> }
-</h4>
+<h2><a name="explain"></a>Explain</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c">explain</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">measure</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="#query">query</a></code></td></tr></table>
 <p>Does not run the query, but only computes and returns the query plan. With &#x201c;explain measure&#x201d;, the expected cost is calculated as well. In both cases, the query result will only have one column called &#x2018;plan&#x2019;, and one row that contains the plan.</p>
 <p>Examples:</p>
 
@@ -584,14 +479,7 @@ cost: { &quot;nt:base&quot;: 2.0 }
 </pre></div></div>
 <p>This means the property index named &#x201c;uuid&#x201d; is used for this query. The expected cost (roughly the number of uncached I/O operations) is 2.</p>
 <hr />
-</div></div>
-<div class="section" id="measure">
-<h3 id="measure">Measure</h3>
-
-<div class="section">
-<h4><a name="measure__query_"></a>
-measure { <a href="#query">query</a> }
-</h4>
+<h2><a name="measure"></a>Measure</h2><table class="railroad"><tr class="railroad"><td class="d"><code class="c">measure <a href="#query">query</a></code></td></tr></table>
 <p>Runs the query, but instead of returning the result, returns the number of rows traversed. The query result has two columns, one called &#x2018;selector&#x2019; and one called &#x2018;scanCount&#x2019;. The result has at least two rows, one that represents the total (selector set to &#x2018;query&#x2019;), and one per selector used in the query. </p>
 <p>Examples:</p>
 
@@ -606,7 +494,7 @@ scanCount = 0
 selector = nt:base
 scanCount = 0
 </pre></div></div>
-<p>In this case, the scanCount is zero because the query did not find any nodes.</p></div></div></div>
+<p>In this case, the scanCount is zero because the query did not find any nodes.</p></div>
         </div>
       </div>
     </div>