You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by bu...@apache.org on 2012/12/31 13:22:50 UTC

svn commit: r844402 [5/5] - in /websites/staging/jackrabbit/trunk/content: ./ api/1.5/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/class-use/ api/2.1/org/apache/jackrabbit/test/api/version/simple/class-use/

Modified: websites/staging/jackrabbit/trunk/content/node-type-notation.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/node-type-notation.html (original)
+++ websites/staging/jackrabbit/trunk/content/node-type-notation.html Mon Dec 31 12:22:48 2012
@@ -24,7 +24,598 @@
         <div id="navigation">
         </div>
         <div id="content">
-          
+          <p>The Compact Namespace and Node Type Definition (CND) notation provides a
+compact standardized syntax for defining node types and making namespace
+declarations. The notation is intended both for documentation and for
+programmatically registering node types (if you are unfamiliar with JCR
+node types, you may want to read the general Node Types section first).</p>
+<p>Here is a "worst-case scenario" example that demonstrates all the features
+of the notation:</p>
+<div class="codehilite"><pre><span class="sr">/*  An example node type definition */</span>
+
+<span class="sr">//</span> <span class="n">The</span> <span class="n">namespace</span> <span class="n">declaration</span>
+<span class="o">&lt;</span><span class="n">ns</span> <span class="o">=</span> <span class="s">&#39;http://namespace.com/ns&#39;</span><span class="o">&gt;</span>
+
+<span class="sr">//</span> <span class="n">Node</span> <span class="n">type</span> <span class="n">name</span>
+<span class="p">[</span><span class="n">ns:NodeType</span><span class="p">]</span>
+
+<span class="sr">//</span> <span class="n">Supertypes</span>
+<span class="o">&gt;</span> <span class="n">ns:ParentType1</span><span class="p">,</span> <span class="n">ns:ParentType2</span>
+
+<span class="sr">//</span> <span class="n">This</span> <span class="n">node</span> <span class="n">type</span> <span class="n">supports</span> <span class="n">orderable</span> <span class="n">child</span> <span class="n">nodes</span>
+<span class="n">orderable</span>
+
+<span class="sr">//</span> <span class="n">This</span> <span class="n">is</span> <span class="n">a</span> <span class="n">mixin</span> <span class="n">node</span> <span class="n">type</span>
+<span class="n">mixin</span>
+
+<span class="sr">//</span> <span class="n">Nodes</span> <span class="n">of</span> <span class="n">this</span> <span class="n">node</span> <span class="n">type</span> <span class="n">have</span> <span class="n">a</span> <span class="n">property</span> <span class="n">called</span> <span class="s">&#39;ex:property&#39;</span> <span class="n">of</span> <span class="n">type</span>
+</pre></div>
+
+
+<p>STRING
+    - ex:property (string)</p>
+<div class="codehilite"><pre><span class="sr">//</span> <span class="n">The</span> <span class="n">default</span> <span class="nb">values</span> <span class="k">for</span> <span class="n">this</span>
+<span class="sr">//</span> <span class="p">(</span><span class="n">multi</span><span class="o">-</span><span class="n">value</span><span class="p">)</span> <span class="n">property</span> <span class="n">are</span><span class="o">...</span>
+<span class="o">=</span> <span class="s">&#39;default1&#39;</span><span class="p">,</span> <span class="s">&#39;default2&#39;</span>
+
+<span class="sr">//</span> <span class="n">This</span> <span class="n">property</span> <span class="n">is</span> <span class="n">the</span> <span class="n">primary</span> <span class="n">item</span>
+<span class="n">primary</span>
+
+<span class="sr">//</span> <span class="ow">and</span> <span class="n">it</span> <span class="n">is</span><span class="o">...</span>
+<span class="n">mandatory</span> <span class="n">autocreated</span> <span class="n">protected</span>
+
+<span class="sr">//</span> <span class="ow">and</span> <span class="n">multi</span><span class="o">-</span><span class="n">valued</span>
+<span class="n">multiple</span>
+
+<span class="sr">//</span> <span class="n">It</span> <span class="n">has</span> <span class="n">an</span> <span class="n">on</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span><span class="n">version</span> <span class="n">setting</span> <span class="n">of</span> <span class="o">...</span>
+<span class="n">version</span>
+
+<span class="sr">//</span> <span class="n">The</span> <span class="n">constraint</span> <span class="n">settings</span> <span class="n">are</span><span class="o">...</span>
+<span class="o">&lt;</span> <span class="s">&#39;constraint1&#39;</span><span class="p">,</span> <span class="s">&#39;constraint2&#39;</span>
+
+<span class="sr">//</span> <span class="n">Nodes</span> <span class="n">of</span> <span class="n">this</span> <span class="n">node</span> <span class="n">type</span> <span class="n">have</span> <span class="n">a</span> <span class="n">child</span> <span class="n">node</span> <span class="n">called</span> <span class="n">ns:node</span> <span class="n">which</span> <span class="n">must</span> <span class="n">be</span>
+</pre></div>
+
+
+<p>of
+    // at least the node types ns:reqType1 and ns:reqType2
+    + ns:node (ns:reqType1, ns:reqType2)</p>
+<div class="codehilite"><pre><span class="sr">//</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">default</span> <span class="n">primary</span> <span class="n">node</span> <span class="n">type</span> <span class="n">of</span> <span class="n">the</span> <span class="n">child</span> <span class="n">node</span> <span class="n">is</span><span class="o">...</span>
+<span class="o">=</span> <span class="n">ns:defaultType</span>
+
+<span class="sr">//</span> <span class="n">This</span> <span class="n">child</span> <span class="n">node</span> <span class="n">is</span><span class="o">...</span>
+<span class="n">mandatory</span> <span class="n">autocreated</span> <span class="n">protected</span>
+
+<span class="sr">//</span> <span class="ow">and</span> <span class="n">supports</span> <span class="n">same</span> <span class="n">name</span> <span class="n">siblings</span>
+<span class="n">multiple</span>
+
+<span class="sr">//</span> <span class="ow">and</span> <span class="n">has</span> <span class="n">an</span> <span class="n">on</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span><span class="n">version</span> <span class="n">setting</span> <span class="n">of</span> <span class="o">...</span>
+<span class="n">version</span>
+</pre></div>
+
+
+<p>This definition can be written more compactly and with indentation:</p>
+<div class="codehilite"><pre><span class="sr">/*  An example node type definition */</span>
+<span class="o">&lt;</span><span class="n">ns</span> <span class="o">=</span> <span class="s">&#39;http://namespace.com/ns&#39;</span><span class="o">&gt;</span>
+<span class="p">[</span><span class="n">ns:NodeType</span><span class="p">]</span>
+</pre></div>
+
+
+<blockquote>
+<p>ns:ParentType1, ns:ParentType2
+      orderable mixin
+      - ex:property (string)
+      = 'default1', 'default2'
+        primary mandatory autocreated protected multiple
+        version
+        &lt; 'constraint1', 'constraint2'
+      + ns:node (ns:reqType1, ns:reqType2)
+        = ns:defaultType
+        mandatory autocreated protected multiple version</p>
+</blockquote>
+<p>or, using short forms for the attributes, even like this:</p>
+<div class="codehilite"><pre><span class="sr">&lt;ns=&#39;http://namespace.com/ns&#39;&gt;</span>
+<span class="p">[</span><span class="n">ns:NodeType</span><span class="p">]</span>
+</pre></div>
+
+
+<blockquote>
+<p>ns:ParentType1, ns:ParentType2 o m
+    -ex:property='default1','default2' ! m a p * version
+     &lt;'constraint1', 'constraint2'
+    +ns:node(ns:reqType1,ns:reqType2)=ns:defaultType
+     m a p *  version</p>
+</blockquote>
+<p><a name="NodeTypeNotation-Grammar"></a></p>
+<h2 id="grammar">Grammar</h2>
+<p>The following grammar defines the CND notation. Terminal symbols are in
+double quotes.</p>
+<div class="codehilite"><pre><span class="n">ns_mapping</span> <span class="o">::=</span> <span class="s">&quot;&lt;&quot;</span> <span class="n">prefix</span> <span class="s">&quot;=&quot;</span> <span class="n">uri</span> <span class="s">&quot;&gt;&quot;</span>
+
+<span class="n">prefix</span> <span class="o">::=</span> <span class="n">string</span>
+
+<span class="n">uri</span> <span class="o">::=</span> <span class="n">string</span>
+
+<span class="n">node_type_def</span> <span class="o">::=</span> <span class="n">node_type_name</span> <span class="p">[</span><span class="n">supertypes</span><span class="p">]</span>
+</pre></div>
+
+
+<p>[options]
+              {property_def | child_node_def}</p>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>"</p>
+<div class="codehilite"><pre><span class="n">options</span> <span class="o">::=</span> <span class="n">orderable_opt</span> <span class="o">|</span> <span class="n">mixin_opt</span> <span class="o">|</span> <span class="n">orderable_opt</span>
+        <span class="n">mixin_opt</span> <span class="o">|</span> <span class="n">mixin_opt</span> <span class="n">orderable_opt</span>
+
+<span class="n">orderable_opt</span> <span class="o">::=</span> <span class="s">&quot;orderable&quot;</span> <span class="o">|</span> <span class="s">&quot;ord&quot;</span> <span class="o">|</span> <span class="s">&quot;o&quot;</span>
+
+<span class="n">mixin_opt</span> <span class="o">::=</span> <span class="s">&quot;mixin&quot;</span> <span class="o">|</span> <span class="s">&quot;mix&quot;</span> <span class="o">|</span> <span class="s">&quot;m&quot;</span>
+
+<span class="n">property_def</span> <span class="o">::=</span> <span class="s">&quot;-&quot;</span> <span class="n">property_name</span> <span class="p">[</span><span class="n">property_type_decl</span><span class="p">]</span>
+ <span class="p">[</span><span class="n">default_values</span><span class="p">]</span>
+</pre></div>
+
+
+<p>[attributes]
+     [value_constraints]</p>
+<div class="codehilite"><pre><span class="n">property_type_decl</span> <span class="o">::=</span> <span class="s">&quot;(&quot;</span> <span class="n">property_type</span> <span class="s">&quot;)&quot;</span>
+
+<span class="n">property_type</span> <span class="o">::=</span> <span class="s">&quot;STRING&quot;</span> <span class="o">|</span> <span class="s">&quot;String&quot;</span> <span class="o">|</span><span class="s">&quot;string&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;BINARY&quot;</span> <span class="o">|</span> <span class="s">&quot;Binary&quot;</span> <span class="o">|</span> <span class="s">&quot;binary&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;LONG&quot;</span> <span class="o">|</span> <span class="s">&quot;Long&quot;</span> <span class="o">|</span> <span class="s">&quot;long&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;DOUBLE&quot;</span> <span class="o">|</span> <span class="s">&quot;Double&quot;</span> <span class="o">|</span> <span class="s">&quot;double&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;BOOLEAN&quot;</span> <span class="o">|</span> <span class="s">&quot;Boolean&quot;</span> <span class="o">|</span> <span class="s">&quot;boolean&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;DATE&quot;</span> <span class="o">|</span> <span class="s">&quot;Date&quot;</span> <span class="o">|</span> <span class="s">&quot;date&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;NAME | &quot;</span><span class="n">Name</span> <span class="o">|</span> <span class="s">&quot;name&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;PATH&quot;</span> <span class="o">|</span> <span class="s">&quot;Path&quot;</span> <span class="o">|</span> <span class="s">&quot;path&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;REFERENCE&quot;</span> <span class="o">|</span> <span class="s">&quot;Reference&quot;</span> <span class="o">|</span>
+             <span class="s">&quot;reference&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;UNDEFINED&quot;</span> <span class="o">|</span> <span class="s">&quot;Undefined&quot;</span> <span class="o">|</span>
+             <span class="s">&quot;undefined&quot;</span> <span class="o">|</span> <span class="s">&quot;*&quot;</span>
+
+<span class="n">default_values</span> <span class="o">::=</span> <span class="s">&quot;=&quot;</span> <span class="n">string_list</span>
+
+<span class="n">value_constraints</span> <span class="o">::=</span> <span class="s">&quot;&lt;&quot;</span> <span class="n">string_list</span>
+
+<span class="n">node_def</span> <span class="o">::=</span> <span class="s">&quot;+&quot;</span> <span class="n">node_name</span> <span class="p">[</span><span class="n">required_types</span><span class="p">]</span>
+ <span class="p">[</span><span class="n">default_type</span><span class="p">]</span>
+</pre></div>
+
+
+<p>[attributes]</p>
+<div class="codehilite"><pre><span class="n">required_types</span> <span class="o">::=</span> <span class="s">&quot;(&quot;</span> <span class="n">string_list</span> <span class="s">&quot;)&quot;</span>
+
+<span class="n">default_type</span> <span class="o">::=</span> <span class="s">&quot;=&quot;</span> <span class="n">string</span>
+
+<span class="n">attributes</span> <span class="o">::=</span> <span class="s">&quot;primary&quot;</span> <span class="o">|</span> <span class="s">&quot;pri&quot;</span> <span class="o">|</span> <span class="s">&quot;!&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;autocreated&quot;</span> <span class="o">|</span> <span class="s">&quot;aut&quot;</span> <span class="o">|</span> <span class="s">&quot;a&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;mandatory&quot;</span> <span class="o">|</span> <span class="s">&quot;man&quot;</span> <span class="o">|</span> <span class="s">&quot;m&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;protected&quot;</span> <span class="o">|</span> <span class="s">&quot;pro&quot;</span> <span class="o">|</span> <span class="s">&quot;p&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;multiple&quot;</span> <span class="o">|</span> <span class="s">&quot;mul&quot;</span> <span class="o">|</span> <span class="s">&quot;*&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;COPY&quot;</span> <span class="o">|</span> <span class="s">&quot;Copy&quot;</span> <span class="o">|</span> <span class="s">&quot;copy&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;VERSION&quot;</span> <span class="o">|</span> <span class="s">&quot;Version&quot;</span> <span class="o">|</span> <span class="s">&quot;version&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;INITIALIZE&quot;</span> <span class="o">|</span> <span class="s">&quot;Initialize&quot;</span> <span class="o">|</span>
+          <span class="s">&quot;initialize&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;COMPUTE&quot;</span> <span class="o">|</span> <span class="s">&quot;Compute&quot;</span> <span class="o">|</span> <span class="s">&quot;compute&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;IGNORE&quot;</span> <span class="o">|</span> <span class="s">&quot;Ignore&quot;</span> <span class="o">|</span> <span class="s">&quot;ignore&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;ABORT&quot;</span> <span class="o">|</span> <span class="s">&quot;Abort&quot;</span> <span class="o">|</span> <span class="s">&quot;abort&quot;</span>
+
+<span class="n">string_list</span> <span class="o">::=</span> <span class="n">string</span> <span class="p">{</span><span class="s">&quot;,&quot;</span> <span class="n">string</span><span class="p">}</span>
+
+<span class="n">string</span> <span class="o">::=</span> <span class="n">quoted_string</span> <span class="o">|</span> <span class="n">unquoted_string</span>
+
+<span class="n">quoted_string</span> <span class="o">::</span> <span class="o">=</span> <span class="s">&quot;&#39;&quot;</span> <span class="n">unquoted_string</span> <span class="s">&quot;&#39;&quot;</span>
+
+<span class="n">unquoted_string</span> <span class="o">::=</span> <span class="p">[</span><span class="n">A</span><span class="o">-</span><span class="n">Za</span><span class="o">-</span><span class="n">z0</span><span class="o">-</span><span class="mi">9</span><span class="p">:</span><span class="n">_</span><span class="p">]</span>
+</pre></div>
+
+
+<p>+</p>
+<p><a name="NodeTypeNotation-CNDNotationinDetail"></a></p>
+<h2 id="cnd-notation-in-detail">CND Notation in Detail</h2>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>A CND consists of zero or more blocks, each of which is either namespace
+declaration or a node type definition. Namespace prefixes referenced in a
+node type definition block must be declared in a preceding namespace
+declaration block.</p>
+<p><a name="NodeTypeNotation-NamespaceDeclaration"></a></p>
+<h3 id="namespace-declaration">Namespace Declaration</h3>
+<div class="codehilite"><pre><span class="n">prefix</span> <span class="o">::=</span> <span class="n">string</span>
+
+<span class="n">uri</span> <span class="o">::=</span> <span class="n">string</span>
+</pre></div>
+
+
+<p>A namespace declaration consists of prefix/URI pair. The prefix must be a
+valid JCR namespace prefix, which is the same as a valid XML namespace
+prefix. The URI can in fact be any string. Just as in XML, it need not
+actually be a URI, though adhering to that convention is recommended.</p>
+<p><a name="NodeTypeNotation-NodeTypeDefinition"></a></p>
+<h3 id="node-type-definition">Node Type Definition</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>[options]
+              {property_def | child_node_def}</p>
+<p>A node type definition consists of a node type name followed by an optional
+supertypes block, an optional options block and zero or more blocks, each
+either a property or node definition.</p>
+<p><a name="NodeTypeNotation-NodeTypeName"></a></p>
+<h3 id="node-type-name">Node Type Name</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>"</p>
+<p>The node type name is delimited by square brackets and must be a valid JCR
+name. It may be single-quoted (see Quoting, below). This element is the
+only strictly required element within a node type definition, though a
+definition consisting only of a node type name would simply define a new
+node type identical to nt:base.</p>
+<p><a name="NodeTypeNotation-Supertypes"></a></p>
+<h3 id="supertypes">Supertypes</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>After the node type name comes the optional list of supertypes. If this
+element is not present and the node type is not a mixin (see ?1.3.5
+Options), then a supertype of nt:base is assumed. If present, the element
+consists of a greater-than sign followed by a comma delimited list of node
+type names, each of which may optionally be single-quoted (see Quoting
+below). In Jackrabbit, multiple inheritance of node types is supported, so
+this list can be greater than one item in length.</p>
+<p><a name="NodeTypeNotation-Options"></a></p>
+<h3 id="options">Options</h3>
+<div class="codehilite"><pre>        <span class="n">mixin_opt</span> <span class="o">|</span> <span class="n">mixin_opt</span> <span class="n">orderable_opt</span>
+
+<span class="n">orderable_opt</span> <span class="o">::=</span> <span class="s">&quot;orderable&quot;</span> <span class="o">|</span> <span class="s">&quot;ord&quot;</span> <span class="o">|</span> <span class="s">&quot;o&quot;</span>
+
+<span class="n">mixin_opt</span> <span class="o">::=</span> <span class="s">&quot;mixin&quot;</span> <span class="o">|</span> <span class="s">&quot;mix&quot;</span> <span class="o">|</span> <span class="s">&quot;m&quot;</span>
+</pre></div>
+
+
+<p>The option indicators follow the node type name and optional supertype
+list.</p>
+<p>If the keyword orderable (or a short form) is present, then the orderable
+child node setting of the node type is true. If the keyword is missing,
+then the setting is false.</p>
+<p>If the keyword mixin (or a short form) is present, then this is a mixin
+node type. If the keyword is missing, then this is a primary node type.</p>
+<p><a name="NodeTypeNotation-PropertyDefinition"></a></p>
+<h3 id="property-definition">Property Definition</h3>
+<div class="codehilite"><pre> <span class="p">[</span><span class="n">default_values</span><span class="p">]</span>
+</pre></div>
+
+
+<p>[attributes]
+     [value_constraints]</p>
+<p>A property definition consists of a minus sign followed by a property name,
+followed in turn by optional elements defining the property type, the
+default values, the property attributes and the value constraints.</p>
+<p><a name="NodeTypeNotation-PropertyName"></a></p>
+<h3 id="property-name">Property Name</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>The property name must be a valid JCR name or *, to indicate a residual
+property definition. It may be single-quoted.</p>
+<p><a name="NodeTypeNotation-PropertyType"></a></p>
+<h3 id="property-type">Property Type</h3>
+<div class="codehilite"><pre><span class="n">property_type</span> <span class="o">::=</span> <span class="s">&quot;STRING&quot;</span> <span class="o">|</span> <span class="s">&quot;String |&quot;</span><span class="n">string</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">BINARY</span><span class="s">&quot; | &quot;</span><span class="n">Binary</span><span class="s">&quot; | &quot;</span><span class="n">binary</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">LONG</span><span class="s">&quot; | &quot;</span><span class="n">Long</span><span class="s">&quot; | &quot;</span><span class="n">long</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">DOUBLE</span><span class="s">&quot; | &quot;</span><span class="n">Double</span><span class="s">&quot; | &quot;</span><span class="n">double</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">BOOLEAN</span><span class="s">&quot; | &quot;</span><span class="n">Boolean</span><span class="s">&quot; | &quot;</span><span class="n">boolean</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">DATE</span><span class="s">&quot; | &quot;</span><span class="n">Date</span><span class="s">&quot; | &quot;</span><span class="n">date</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">NAME</span> <span class="o">|</span> <span class="s">&quot;Name | &quot;</span><span class="n">name</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">PATH</span><span class="s">&quot; | &quot;</span><span class="n">Path</span><span class="s">&quot; | &quot;</span><span class="n">path</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">REFERENCE</span><span class="s">&quot; | &quot;</span><span class="n">Reference</span><span class="s">&quot; | &quot;</span><span class="n">reference</span><span class="s">&quot; |</span>
+<span class="s">          &quot;</span><span class="n">UNDEFINED</span><span class="s">&quot; | &quot;</span><span class="n">Undefined</span><span class="s">&quot; | &quot;</span><span class="n">undefined</span><span class="s">&quot; | &quot;</span><span class="o">*</span><span class="err">&quot;</span>
+</pre></div>
+
+
+<p>The property type is indicated by a keyword delimited by parentheses. If
+the property type declaration is missing a type of STRING is assumed.</p>
+<p><a name="NodeTypeNotation-DefaultValues"></a></p>
+<h3 id="default-values">Default Values</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>The default value or values, in the case of a multi-value property, are
+indicated by an equal sign followed by either a single value in string form
+or a comma-delimited list of values. The values may be single-quoted. If
+the default value definition is missing then no default value is set.</p>
+<p><a name="NodeTypeNotation-Attributes"></a></p>
+<h3 id="attributes">Attributes</h3>
+<div class="codehilite"><pre>           <span class="s">&quot;autocreated&quot;</span> <span class="o">|</span> <span class="s">&quot;aut&quot;</span> <span class="o">|</span> <span class="s">&quot;a&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;mandatory&quot;</span> <span class="o">|</span> <span class="s">&quot;man&quot;</span> <span class="o">|</span> <span class="s">&quot;m&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;protected&quot;</span> <span class="o">|</span> <span class="s">&quot;pro&quot;</span> <span class="o">|</span> <span class="s">&quot;p&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;multiple&quot;</span> <span class="o">|</span> <span class="s">&quot;mul&quot;</span> <span class="o">|</span> <span class="s">&quot;*&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;COPY&quot;</span> <span class="o">|</span> <span class="s">&quot;Copy&quot;</span> <span class="o">|</span> <span class="s">&quot;copy&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;VERSION&quot;</span> <span class="o">|</span> <span class="s">&quot;Version&quot;</span> <span class="o">|</span> <span class="s">&quot;version&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;INITIALIZE&quot;</span> <span class="o">|</span> <span class="s">&quot;Initialize&quot;</span> <span class="o">|</span> <span class="s">&quot;initialize&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;COMPUTE&quot;</span> <span class="o">|</span> <span class="s">&quot;Compute&quot;</span> <span class="o">|</span> <span class="s">&quot;compute&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;IGNORE&quot;</span> <span class="o">|</span> <span class="s">&quot;Ignore&quot;</span> <span class="o">|</span> <span class="s">&quot;ignore&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;ABORT&quot;</span> <span class="o">|</span> <span class="s">&quot;Abort&quot;</span> <span class="o">|</span> <span class="s">&quot;abort&quot;</span>
+</pre></div>
+
+
+<p>The attribute indicators describe the characteristics of the property. The
+presence of an attribute keyword indicates that the corresponding
+characteristic applies to this property. It's absence indicates that the
+corresponding characteristic does not apply.</p>
+<p>The primary keyword indicates that this property is the primary item. It
+may appear on a maximum of one property or child node definition within a
+node type definition.</p>
+<p>The multiple keyword indicates that this property is multi-valued.</p>
+<p>A maximum of one on-version indicator may be present. If none is present
+then an on-version setting of COPY is assumed.</p>
+<p><a name="NodeTypeNotation-ValueConstraints"></a></p>
+<h3 id="value-constraints">Value Constraints</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>Value constraint are specified by a less-than sign followed by a
+comma-delimited list of constraint strings, each optionally single-quoted.</p>
+<p><a name="NodeTypeNotation-ChildNodeDefinition"></a></p>
+<h3 id="child-node-definition">Child Node Definition</h3>
+<div class="codehilite"><pre> <span class="p">[</span><span class="n">default_type</span><span class="p">]</span>
+</pre></div>
+
+
+<p>[attributes]</p>
+<p>A child node definition consists of a plus sign followed by a property
+name, followed in turn by optional elements defining the required primary
+node types, the default node type, and the node attributes.</p>
+<p><a name="NodeTypeNotation-NodeName"></a></p>
+<h3 id="node-name">Node Name</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>The node name must be a valid JCR name or *, to indicate a residual child
+node definition. It may be single-quoted.</p>
+<p><a name="NodeTypeNotation-RequiredPrimaryNodeTypes"></a></p>
+<h3 id="required-primary-node-types">Required Primary Node Types</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>The required node types of the child node are indicated by a
+comma-delimited list of node types, within parentheses. If this element is
+missing then a required primary node type of nt:base is assumed. This is
+the least restrictive setting possible.</p>
+<p><a name="NodeTypeNotation-DefaultPrimaryNodeType"></a></p>
+<h3 id="default-primary-node-type">Default Primary Node Type</h3>
+<div class="codehilite"><pre>
+</pre></div>
+
+
+<p>The default primary node type is indicated by an equals-sign followed by a
+node type name, which may be single-quoted. If this element is missing then
+no default primary node type is set.</p>
+<p><a name="NodeTypeNotation-Attributes"></a></p>
+<h3 id="attributes_1">Attributes</h3>
+<div class="codehilite"><pre>           <span class="s">&quot;autocreated&quot;</span> <span class="o">|</span> <span class="s">&quot;aut&quot;</span> <span class="o">|</span> <span class="s">&quot;a&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;mandatory&quot;</span> <span class="o">|</span> <span class="s">&quot;man&quot;</span> <span class="o">|</span> <span class="s">&quot;m&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;protected&quot;</span> <span class="o">|</span> <span class="s">&quot;pro&quot;</span> <span class="o">|</span> <span class="s">&quot;p&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;multiple&quot;</span> <span class="o">|</span> <span class="s">&quot;mul&quot;</span> <span class="o">|</span> <span class="s">&quot;*&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;COPY&quot;</span> <span class="o">|</span> <span class="s">&quot;Copy&quot;</span> <span class="o">|</span> <span class="s">&quot;copy&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;VERSION&quot;</span> <span class="o">|</span> <span class="s">&quot;Version&quot;</span> <span class="o">|</span> <span class="s">&quot;version&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;INITIALIZE&quot;</span> <span class="o">|</span> <span class="s">&quot;Initialize&quot;</span> <span class="o">|</span> <span class="s">&quot;initialize&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;COMPUTE&quot;</span> <span class="o">|</span> <span class="s">&quot;Compute&quot;</span> <span class="o">|</span> <span class="s">&quot;compute&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;IGNORE&quot;</span> <span class="o">|</span> <span class="s">&quot;Ignore&quot;</span> <span class="o">|</span> <span class="s">&quot;ignore&quot;</span> <span class="o">|</span>
+           <span class="s">&quot;ABORT&quot;</span> <span class="o">|</span> <span class="s">&quot;Abort&quot;</span> <span class="o">|</span> <span class="s">&quot;abort&quot;</span>
+</pre></div>
+
+
+<p>The attribute indicators describe the characteristics of the child node.
+The presence of an attribute keyword indicates that the corresponding
+characteristic applies to this child node. It's absence indicates that the
+corresponding characteristic does not apply.</p>
+<p>The primary keyword indicates that this child node is the primary item. It
+may appear on a maximum of one property or child node definition within a
+node type definition.</p>
+<p>The multiple keyword indicates that this child node may have same-name
+siblings.</p>
+<p>A maximum of one on-version indicator may be present. If none is present
+then an on-version setting of COPY is assumed.</p>
+<p><a name="NodeTypeNotation-Quoting"></a></p>
+<h3 id="quoting">Quoting</h3>
+<div class="codehilite"><pre><span class="n">string</span> <span class="o">::=</span> <span class="n">quoted_string</span> <span class="o">|</span> <span class="n">unquoted_string</span>
+
+<span class="n">quoted_string</span> <span class="o">::</span> <span class="o">=</span> <span class="s">&quot;&#39;&quot;</span> <span class="n">unquoted_string</span> <span class="s">&quot;&#39;&quot;</span>
+
+<span class="n">unquoted_string</span> <span class="o">::=</span> <span class="sr">/* a string */</span>
+</pre></div>
+
+
+<p>Single quotes (') are used to allow for strings (i.e., names, prefixes,
+URIs, values or constraint strings) with characters that would otherwise be
+interpreted as delimiters.</p>
+<p><a name="NodeTypeNotation-Escaping"></a></p>
+<h3 id="escaping">Escaping</h3>
+<p>The standard Java escape sequences are also supported:</p>
+<div class="codehilite"><pre><span class="o">\</span><span class="n">n</span> <span class="n">newline</span>
+<span class="o">\</span><span class="n">t</span> <span class="n">tab</span>
+<span class="o">\</span><span class="n">b</span> <span class="n">backspace</span>
+<span class="o">\</span><span class="n">f</span> <span class="n">form</span> <span class="n">feed</span>
+<span class="o">\</span><span class="n">r</span> <span class="k">return</span>
+<span class="o">\</span><span class="err">&quot;</span> <span class="n">double</span> <span class="n">quote</span>
+<span class="o">\</span><span class="err">&#39;</span> <span class="n">single</span> <span class="n">quote</span>
+<span class="o">\\</span> <span class="n">back</span> <span class="n">slash</span>
+<span class="o">\</span><span class="n">uHHHH</span> <span class="n">Unicode</span> <span class="n">character</span> <span class="n">in</span> <span class="n">hexadecimal</span>
+</pre></div>
+
+
+<p><a name="NodeTypeNotation-Comments"></a></p>
+<h3 id="comments">Comments</h3>
+<p>Comment can also be included in the notation using either of the standard
+Java forms:</p>
+<div class="codehilite"><pre><span class="sr">//</span> <span class="n">A</span> <span class="n">comment</span>
+
+<span class="sr">/* Another comment */</span>
+</pre></div>
+
+
+<p><a name="NodeTypeNotation-WhitespaceandShortForms"></a></p>
+<h3 id="whitespace-and-short-forms">Whitespace and Short Forms</h3>
+<p>The notation can be compacted by taking advantage of the following the fact that spacing around keychars (<a href="-.html"> </a></p>
+<blockquote>
+<p>, - ( ) = &lt;), newlines and indentation are not required. So, the
+following is also well-formed:</p>
+</blockquote>
+<div class="codehilite"><pre><span class="p">[</span><span class="n">x</span><span class="p">]</span>
+</pre></div>
+
+
+<blockquote>
+<p>y,z orderable mixin -p(date)=a,b primary mandatory autocreated protected
+multiple version &lt;c,d</p>
+</blockquote>
+<p>Additionally, though spaces are required around the keywords (orderable,
+mixin, date, mandatory, etc.), short forms for keywords can be used. So,
+this:</p>
+<div class="codehilite"><pre><span class="p">[</span><span class="n">x</span><span class="p">]</span>
+</pre></div>
+
+
+<blockquote>
+<p>y,z o m-p(date)=a,b ! m a p * version &lt;c,d</p>
+</blockquote>
+<p>is well-formed (but perhaps not recommended!).</p>
+<p><a name="NodeTypeNotation-WhythisWeirdNotation?"></a></p>
+<h3 id="why-this-weird-notation">Why this Weird Notation?</h3>
+<p>Here's why:</p>
+<p>Old Documentation Notation</p>
+<p>Here is the definition of the built-in node type nt:resource using the old
+documentation notation (used in v1.0 of the JCR specification, for
+example):</p>
+<div class="codehilite"><pre><span class="n">NodeTypeName</span>
+  <span class="n">nt:resource</span>
+<span class="n">Supertypes</span>
+  <span class="n">nt:base</span>
+  <span class="n">mix:referenceable</span>
+<span class="n">IsMixin</span>
+  <span class="n">false</span>
+<span class="n">HasOrderableChildNodes</span>
+  <span class="n">false</span>
+<span class="n">PrimaryItemName</span>
+  <span class="n">jcr:data</span>
+<span class="n">PropertyDefinition</span>
+  <span class="n">Name</span> <span class="n">jcr:encoding</span>
+  <span class="n">RequiredType</span> <span class="n">STRING</span>
+  <span class="n">ValueConstraints</span> <span class="o">[]</span>
+  <span class="n">DefaultValues</span> <span class="n">null</span>
+  <span class="n">AutoCreated</span> <span class="n">false</span>
+  <span class="n">Mandatory</span> <span class="n">false</span>
+  <span class="n">OnParentVersion</span> <span class="n">COPY</span>
+  <span class="n">Protected</span> <span class="n">false</span>
+  <span class="n">Multiple</span> <span class="n">false</span>
+<span class="n">PropertyDefinition</span>
+  <span class="n">Name</span> <span class="n">jcr:mimeType</span>
+  <span class="n">RequiredType</span> <span class="n">STRING</span>
+  <span class="n">ValueConstraints</span> <span class="o">[]</span>
+  <span class="n">DefaultValues</span> <span class="n">null</span>
+  <span class="n">AutoCreated</span> <span class="n">false</span>
+  <span class="n">Mandatory</span> <span class="n">true</span>
+  <span class="n">OnParentVersion</span> <span class="n">COPY</span>
+  <span class="n">Protected</span> <span class="n">false</span>
+  <span class="n">Multiple</span> <span class="n">false</span>
+<span class="n">PropertyDefinition</span>
+  <span class="n">Name</span> <span class="n">jcr:data</span>
+  <span class="n">RequiredType</span> <span class="n">BINARY</span>
+  <span class="n">ValueConstraints</span> <span class="o">[]</span>
+  <span class="n">DefaultValues</span> <span class="n">null</span>
+  <span class="n">AutoCreated</span> <span class="n">false</span>
+  <span class="n">Mandatory</span> <span class="n">true</span>
+  <span class="n">OnParentVersion</span> <span class="n">COPY</span>
+  <span class="n">Protected</span> <span class="n">false</span>
+  <span class="n">Multiple</span> <span class="n">false</span>
+<span class="n">PropertyDefinition</span>
+  <span class="n">Name</span> <span class="n">jcr:lastModified</span>
+  <span class="n">RequiredType</span> <span class="n">DATE</span>
+  <span class="n">ValueConstraints</span> <span class="o">[]</span>
+  <span class="n">DefaultValues</span> <span class="n">null</span>
+  <span class="n">AutoCreated</span> <span class="n">false</span>
+  <span class="n">Mandatory</span> <span class="n">true</span>
+  <span class="n">OnParentVersion</span> <span class="n">IGNORE</span>
+  <span class="n">Protected</span> <span class="n">false</span>
+  <span class="n">Multiple</span> <span class="n">false</span>
+</pre></div>
+
+
+<p>Old Configuration Notation</p>
+<p>Here is the same node type in the standard XML notation (used in
+configuration files in the Jackrabbit project, for example):</p>
+<div class="codehilite"><pre><span class="nt">&lt;nodeType</span> <span class="na">name=</span><span class="s">&quot;nt:resource&quot;</span>
+      <span class="na">isMixin=</span><span class="s">&quot;false&quot;</span>
+      <span class="na">hasOrderableChildNodes=</span><span class="s">&quot;false&quot;</span>
+      <span class="na">primaryItemName=</span><span class="s">&quot;jcr:data&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;supertypes&gt;</span>
+    <span class="nt">&lt;supertype&gt;</span>nt:base<span class="nt">&lt;/supertype&gt;</span>
+    <span class="nt">&lt;supertype&gt;</span>mix:referenceable<span class="nt">&lt;/supertype&gt;</span>
+    <span class="nt">&lt;/supertypes&gt;</span>
+    <span class="nt">&lt;propertyDefinition</span> <span class="na">name=</span><span class="s">&quot;jcr:encoding&quot;</span>
+            <span class="na">requiredType=</span><span class="s">&quot;String&quot;</span>
+            <span class="na">autoCreated=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">mandatory=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">onParentVersion=</span><span class="s">&quot;COPY&quot;</span>
+            <span class="na">protected=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">multiple=</span><span class="s">&quot;false&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;propertyDefinition</span> <span class="na">name=</span><span class="s">&quot;jcr:mimeType&quot;</span>
+            <span class="na">requiredType=</span><span class="s">&quot;String&quot;</span>
+            <span class="na">autoCreated=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">mandatory=</span><span class="s">&quot;true&quot;</span>
+            <span class="na">onParentVersion=</span><span class="s">&quot;COPY&quot;</span>
+            <span class="na">protected=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">multiple=</span><span class="s">&quot;false&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;propertyDefinition</span> <span class="na">name=</span><span class="s">&quot;jcr:data&quot;</span>
+            <span class="na">requiredType=</span><span class="s">&quot;Binary&quot;</span>
+            <span class="na">autoCreated=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">mandatory=</span><span class="s">&quot;true&quot;</span>
+            <span class="na">onParentVersion=</span><span class="s">&quot;COPY&quot;</span>
+            <span class="na">protected=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">multiple=</span><span class="s">&quot;false&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;propertyDefinition</span> <span class="na">name=</span><span class="s">&quot;jcr:lastModified&quot;</span>
+            <span class="na">requiredType=</span><span class="s">&quot;Date&quot;</span>
+            <span class="na">autoCreated=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">mandatory=</span><span class="s">&quot;true&quot;</span>
+            <span class="na">onParentVersion=</span><span class="s">&quot;IGNORE&quot;</span>
+            <span class="na">protected=</span><span class="s">&quot;false&quot;</span>
+            <span class="na">multiple=</span><span class="s">&quot;false&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/nodeType&gt;</span>
+</pre></div>
+
+
+<p>New Format</p>
+<p>And, here it is in the new CND notation:</p>
+<div class="codehilite"><pre><span class="p">[</span><span class="n">nt:resource</span><span class="p">]</span>
+</pre></div>
+
+
+<blockquote>
+<p>mix:referenceable
+    - jcr:encoding
+    - jcr:mimeType mandatory
+    - jcr:data (binary) mandatory
+    - jcr:lastModified (date) mandatory ignore</p>
+</blockquote>
+<p>Case closed.</p>
+<p><a name="NodeTypeNotation-Syntaxhightlightingfortexteditors"></a></p>
+<h2 id="syntax-hightlighting-for-text-editors">Syntax hightlighting for text editors</h2>
+<p>Here is a TextMate bundle for CND syntax highlighting: <a href="^cnd.zip.html">^CND.zip</a></p>
         </div>
         <div id="end"></div>
       </div>

Modified: websites/staging/jackrabbit/trunk/content/node-type-visualization.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/node-type-visualization.html (original)
+++ websites/staging/jackrabbit/trunk/content/node-type-visualization.html Mon Dec 31 12:22:48 2012
@@ -82,9 +82,8 @@ The square boxes represent child node an
         xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
         xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
         xmlns:jcr="http://www.jcp.org/jcr/1.0"</p>
-<blockquote />
-<xsl:output method="text" encoding="UTF-8"/>
-
+<blockquote></blockquote>
+<p><xsl:output method="text" encoding="UTF-8"/></p>
 <p><xsl:template match="/">
   <xsl:text>digraph {&#10;</xsl:text>
   <xsl:text>  rankdir=LR;&#10;</xsl:text>
@@ -118,9 +117,8 @@ The square boxes represent child node an
     <xsl:text>" [dir = back, tooltip = "supertype"]
 ;&#10;</xsl:text>
   </xsl:for-each></p>
-<xsl:for-each select="sv:node[@sv:name='jcr:childNodeDefinition']
-">
-
+<p><xsl:for-each select="sv:node[@sv:name='jcr:childNodeDefinition']
+"></p>
 <div class="codehilite"><pre><span class="o">&lt;</span><span class="n">xsl:variable</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;name&quot;</span><span class="o">&gt;</span>
   <span class="sr">&lt;xsl:choose&gt;</span>
     <span class="o">&lt;</span><span class="n">xsl:when</span> <span class="n">test</span><span class="o">=</span><span class="err">&quot;</span><span class="n">sv:property</span><span class="p">[</span><span class="nv">@sv:name</span><span class="o">=</span><span class="s">&#39;jcr:name&#39;</span><span class="p">]</span>
@@ -169,12 +167,9 @@ The square boxes represent child node an
     <xsl:value-of select="$id"/>
     <xsl:text>" [dir = back, tooltip = "has primary type"]
 ;&#10;</xsl:text></p>
-</xsl:for-each>
-
-</xsl:template>
-
-</xsl:transform>
-
+<p></xsl:for-each></p>
+<p></xsl:template></p>
+<p></xsl:transform></p>
 </li>
 </ol>
         </div>

Modified: websites/staging/jackrabbit/trunk/content/node-types.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/node-types.html (original)
+++ websites/staging/jackrabbit/trunk/content/node-types.html Mon Dec 31 12:22:48 2012
@@ -30,7 +30,7 @@ types to define a custom content model f
 have Jackrabbit enforce the constraints of that model at the repository
 level.</p>
 <p><a name="NodeTypes-PrimaryvsMixin"></a></p>
-<h2 id="primary_vs_mixin">Primary vs Mixin</h2>
+<h2 id="primary-vs-mixin">Primary vs Mixin</h2>
 <p>There are two categories of node types, <em>primary</em> and <em>mixin</em>. Every node
 has a primary node type assigned to it upon creation (see <em>Node.addNode</em>
 in the JCR API). In addition, a mixin node type may be added to a node
@@ -63,7 +63,7 @@ non-trivial at best and up to a certain 
 therefore, in compliance with the spec, doesn't support inheritance of node
 type attributes such as orderable.</p>
 <p><a name="NodeTypes-NodeTypeDefinition"></a></p>
-<h2 id="node_type_definition">Node Type Definition</h2>
+<h2 id="node-type-definition">Node Type Definition</h2>
 <p>A node type definition has the following attributes:</p>
 <ul>
 <li><em>Name</em> Every node type registered with the repository has a unique name.
@@ -90,7 +90,7 @@ node) by name as the primary item. This 
 <em>Node.getPrimaryItem()</em>.</li>
 </ul>
 <p><a name="NodeTypes-PropertyDefinition"></a></p>
-<h2 id="property_definition">Property Definition</h2>
+<h2 id="property-definition">Property Definition</h2>
 <p>A property definition (within a node type definition) contains the the
 following information:</p>
 <ul>
@@ -134,7 +134,7 @@ string properties both called X, one of 
 that is not. An example of such a node type is <em>nt:unstructured</em>.</li>
 </ul>
 <p><a name="NodeTypes-ChildNodeDefinition"></a></p>
-<h2 id="child_node_definition">Child Node Definition</h2>
+<h2 id="child-node-definition">Child Node Definition</h2>
 <p>A child node definition (within a node type definition) contains the the
 following information:</p>
 <ul>
@@ -168,7 +168,7 @@ same-name siblings, meaning that the par
 child node of this name.</li>
 </ul>
 <p><a name="NodeTypes-RegisteringNodeTypes"></a></p>
-<h2 id="registering_node_types">Registering Node Types</h2>
+<h2 id="registering-node-types">Registering Node Types</h2>
 <p>Each Jackrabbit instance has a <em>NodeTypeRegistry</em> which is created on
 start-up and populated with the set of built-in node types (these include
 both those required by the JCR specification and others required by the

Modified: websites/staging/jackrabbit/trunk/content/object-content-manager.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/object-content-manager.html (original)
+++ websites/staging/jackrabbit/trunk/content/object-content-manager.html Mon Dec 31 12:22:48 2012
@@ -32,7 +32,7 @@ Usually there is one ObjectContentManage
 <p>This page describes how an ObjectContentManager is working and how it can
 be initialised in your applications. </p>
 <p><a name="ObjectContentManager-HowdoestheObjectContentManagerwork?"></a></p>
-<h2 id="how_does_the_object_content_manager_work_">How does the Object Content Manager work ?</h2>
+<h2 id="how-does-the-object-content-manager-work">How does the Object Content Manager work ?</h2>
 <p>Thanks to a Mapping Descriptor, the ObjectContentManager is able to use the
 appropriate mapping strategy for each persistent object (pojo). The Mapping
 Descriptor contains one Class Descriptor per persistent class. Each Class
@@ -58,7 +58,7 @@ ObjectContentManager is using the Class 
 choice between annoted classes or XML files. Below, you can see how to
 setup correctly an ObjectContentManager. </p>
 <p><a name="ObjectContentManager-HowdoesanobjectispersistedintoaJCRrepository?"></a></p>
-<h2 id="how_does_an_object_is_persisted_into_a_jcr_repository_">How does an object is persisted into a JCR repository ?</h2>
+<h2 id="how-does-an-object-is-persisted-into-a-jcr-repository">How does an object is persisted into a JCR repository ?</h2>
 <p>In all cases, a persistent object (a pojo) is mapped into a JCR node and
 its fields are mapped into subnodes or properties depending on their types.</p>
 <p>There are 3 "field types":</p>
@@ -85,7 +85,7 @@ collection into a multivalue property. <
 <p>The Mapping descriptor contains also information on inheritances, interface
 mapping strategy, lazy loading, custom converter, cache strategy, etc. 
 <a name="ObjectContentManager-Basicsetup(withannotedpersistentclasses)"></a></p>
-<h2 id="basic_setup_with_annoted_persistent_classes">Basic setup (with annoted persistent classes)</h2>
+<h2 id="basic-setup-with-annoted-persistent-classes">Basic setup (with annoted persistent classes)</h2>
 <p>When you start your application, you need the following code to initialize
 correctly the Object Content Manager.</p>
 <div class="codehilite"><pre><span class="nb">import</span> <span class="n">javax</span><span class="o">.</span><span class="n">jcr</span><span class="o">.</span><span class="n">Session</span><span class="p">;</span>
@@ -113,7 +113,7 @@ correctly the Object Content Manager.</p
 
 
 <p><a name="ObjectContentManager-Basicsetup(withoneormoreXMLMappingDescriptorfiles)"></a></p>
-<h2 id="basic_setup_with_one_or_more_xml_mapping_descriptor_files">Basic setup (with one or more XML Mapping Descriptor files)</h2>
+<h2 id="basic-setup-with-one-or-more-xml-mapping-descriptor-files">Basic setup (with one or more XML Mapping Descriptor files)</h2>
 <p>When you start your application, you need the following code to initialize
 correctly the Object Content Manager.</p>
 <div class="codehilite"><pre><span class="nb">import</span> <span class="n">javax</span><span class="o">.</span><span class="n">jcr</span><span class="o">.</span><span class="n">Session</span><span class="p">;</span>
@@ -155,7 +155,7 @@ org.apache.jackrabbit.ocm.manager.object
 
 
 <p><a name="ObjectContentManager-APIOverview"></a></p>
-<h2 id="api_overview">API Overview</h2>
+<h2 id="api-overview">API Overview</h2>
 <p>With the current Object Manager API, it is possible to:</p>
 <ul>
 <li>Manage the object life cycle (insert, update, delete, retrieve). See <a href="basic-ocm-operations.html">Basic OCM operations</a>

Modified: websites/staging/jackrabbit/trunk/content/object-content-mapping.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/object-content-mapping.html (original)
+++ websites/staging/jackrabbit/trunk/content/object-content-mapping.html Mon Dec 31 12:22:48 2012
@@ -61,7 +61,7 @@ classic Forum application contains objec
 "Post". Now, the data objects (pojo) can be managed by our JCR mapping
 tools in order to persist them into a JCR compliant repository.</p>
 <p><a name="ObjectContentMapping-Whyanocm?"></a></p>
-<h2 id="why_an_ocm">Why an ocm?</h2>
+<h2 id="why-an-ocm">Why an ocm?</h2>
 <p>The object content mapping framework was created for the following
 different reasons:</p>
 <ul>

Modified: websites/staging/jackrabbit/trunk/content/ocm-locking.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/ocm-locking.html (original)
+++ websites/staging/jackrabbit/trunk/content/ocm-locking.html Mon Dec 31 12:22:48 2012
@@ -30,7 +30,7 @@ lock on the object level. In order to lo
 to implement the jcr mixin type "mix:lockable". It is possible to specify
 this node type in the class descriptor:</p>
 <p><a name="OCMLocking-Abasicexample"></a></p>
-<h2 id="a_basic_example">A basic example</h2>
+<h2 id="a-basic-example">A basic example</h2>
 <div class="codehilite"><pre><span class="sr">//</span>
 </pre></div>
 

Modified: websites/staging/jackrabbit/trunk/content/ocm-search.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/ocm-search.html (original)
+++ websites/staging/jackrabbit/trunk/content/ocm-search.html Mon Dec 31 12:22:48 2012
@@ -25,7 +25,7 @@
         </div>
         <div id="content">
           <p><a name="OCMSearch-Searchingasingleobject"></a></p>
-<h2 id="searching_a_single_object">Searching a single object</h2>
+<h2 id="searching-a-single-object">Searching a single object</h2>
 <div class="codehilite"><pre><span class="n">QueryManager</span> <span class="n">queryManager</span> <span class="o">=</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getQueryManager</span><span class="p">();</span>
 
 <span class="sr">//</span> <span class="n">Build</span> <span class="n">the</span> <span class="n">search</span> <span class="n">filter</span>
@@ -42,7 +42,7 @@
 
 
 <p><a name="OCMSearch-Searchingacollection"></a></p>
-<h2 id="searching_a_collection">Searching a collection</h2>
+<h2 id="searching-a-collection">Searching a collection</h2>
 <div class="codehilite"><pre><span class="n">QueryManager</span> <span class="n">queryManager</span> <span class="o">=</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getQueryManager</span><span class="p">();</span>
 <span class="n">Filter</span> <span class="n">filter</span> <span class="o">=</span> <span class="n">queryManager</span><span class="o">.</span><span class="n">createFilter</span><span class="p">(</span><span class="n">Paragraph</span><span class="o">.</span><span class="n">class</span><span class="p">);</span>
 <span class="n">filter</span><span class="o">.</span><span class="n">setScope</span><span class="p">(</span><span class="s">&quot;/test/node1//&quot;</span><span class="p">);</span>
@@ -52,7 +52,7 @@
 
 
 <p><a name="OCMSearch-Searchingwithaniterator"></a></p>
-<h2 id="searching_with_an_iterator">Searching with an iterator</h2>
+<h2 id="searching-with-an-iterator">Searching with an iterator</h2>
 <div class="codehilite"><pre><span class="n">QueryManager</span> <span class="n">queryManager</span> <span class="o">=</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getQueryManager</span><span class="p">();</span>
 <span class="n">Filter</span> <span class="n">filter</span> <span class="o">=</span> <span class="n">queryManager</span><span class="o">.</span><span class="n">createFilter</span><span class="p">(</span><span class="n">Paragraph</span><span class="o">.</span><span class="n">class</span><span class="p">);</span>
 <span class="n">filter</span><span class="o">.</span><span class="n">setScope</span><span class="p">(</span><span class="s">&quot;/test/node1//&quot;</span><span class="p">);</span>
@@ -62,7 +62,7 @@
 
 
 <p><a name="OCMSearch-Removeobjectsbasedonaquery"></a></p>
-<h2 id="remove_objects_based_on_a_query">Remove objects based on a query</h2>
+<h2 id="remove-objects-based-on-a-query">Remove objects based on a query</h2>
 <div class="codehilite"><pre><span class="n">QueryManager</span> <span class="n">queryManager</span> <span class="o">=</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getQueryManager</span><span class="p">();</span>
 <span class="n">Filter</span> <span class="n">filter</span> <span class="o">=</span> <span class="n">queryManager</span><span class="o">.</span><span class="n">createFilter</span><span class="p">(</span><span class="n">Paragraph</span><span class="o">.</span><span class="n">class</span><span class="p">);</span>
 <span class="n">filter</span><span class="o">.</span><span class="n">setScope</span><span class="p">(</span><span class="s">&quot;/test/node1//&quot;</span><span class="p">);</span>

Modified: websites/staging/jackrabbit/trunk/content/ocm-version-management.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/ocm-version-management.html (original)
+++ websites/staging/jackrabbit/trunk/content/ocm-version-management.html Mon Dec 31 12:22:48 2012
@@ -36,7 +36,7 @@ compare, replace, revert, ... Each versi
 mix:versionable JCR node. It is possible to specify this node type in the
 xml class descriptor or with an annotation :</p>
 <p><a name="OCMVersionManagement-Checkin-Checkout"></a></p>
-<h2 id="check_in_-_check_out">Check in - Check out</h2>
+<h2 id="check-in-check-out">Check in - Check out</h2>
 <div class="codehilite"><pre><span class="sr">//</span> <span class="n">Create</span> <span class="n">a</span> <span class="k">new</span> <span class="n">page</span> <span class="o">-</span> <span class="n">first</span> <span class="n">version</span>
 <span class="n">Page</span> <span class="n">page</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Page</span><span class="p">();</span>
 <span class="n">page</span><span class="o">.</span><span class="n">setPath</span><span class="p">(</span><span class="s">&quot;/page&quot;</span><span class="p">);</span>
@@ -63,7 +63,7 @@ xml class descriptor or with an annotati
 
 
 <p><a name="OCMVersionManagement-Retrievetheversionhistory"></a></p>
-<h2 id="retrieve_the_version_history">Retrieve the version history</h2>
+<h2 id="retrieve-the-version-history">Retrieve the version history</h2>
 <div class="codehilite"><pre><span class="n">VersionIterator</span> <span class="n">versionIterator</span> <span class="o">=</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getAllVersions</span><span class="p">(</span><span class="s">&quot;/page&quot;</span><span class="p">);</span>
 <span class="k">while</span> <span class="p">(</span><span class="n">versionIterator</span><span class="o">.</span><span class="n">hasNext</span><span class="p">())</span>
 <span class="p">{</span>
@@ -76,7 +76,7 @@ xml class descriptor or with an annotati
 <p>version.getCreated().getTime());
     }</p>
 <p><a name="OCMVersionManagement-Retrieveversiondescription"></a></p>
-<h2 id="retrieve_version_description">Retrieve version description</h2>
+<h2 id="retrieve-version-description">Retrieve version description</h2>
 <div class="codehilite"><pre><span class="sr">//</span> <span class="n">Retrieve</span> <span class="n">the</span> <span class="n">first</span> <span class="n">version</span> <span class="n">description</span>
 <span class="n">Version</span> <span class="n">baseVersion</span> <span class="o">=</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getBaseVersion</span><span class="p">(</span><span class="s">&quot;/page&quot;</span><span class="p">);</span>
 <span class="n">System</span><span class="o">.</span><span class="n">out</span><span class="o">.</span><span class="n">println</span><span class="p">(</span><span class="s">&quot;Base version : &quot;</span> <span class="o">+</span> <span class="n">baseVersion</span><span class="o">.</span><span class="n">getName</span><span class="p">());</span>
@@ -88,14 +88,14 @@ xml class descriptor or with an annotati
 
 
 <p><a name="OCMVersionManagement-Retrievetheobjectstatematchingtoaspecificversion"></a></p>
-<h2 id="retrieve_the_object_state_matching_to_a_specific_version">Retrieve the object state matching to a specific version</h2>
+<h2 id="retrieve-the-object-state-matching-to-a-specific-version">Retrieve the object state matching to a specific version</h2>
 <div class="codehilite"><pre><span class="sr">//</span><span class="n">Get</span> <span class="n">the</span> <span class="n">object</span> <span class="n">matching</span> <span class="n">to</span> <span class="n">the</span> <span class="n">first</span> <span class="n">version</span>
 <span class="n">Page</span>  <span class="n">page</span> <span class="o">=</span> <span class="p">(</span><span class="n">Page</span><span class="p">)</span> <span class="n">ocm</span><span class="o">.</span><span class="n">getObject</span><span class="p">(</span> <span class="s">&quot;/page&quot;</span><span class="p">,</span> <span class="s">&quot;1.0&quot;</span><span class="p">);</span>
 </pre></div>
 
 
 <p><a name="OCMVersionManagement-Usingversionlabels"></a></p>
-<h2 id="using_version_labels">Using version labels</h2>
+<h2 id="using-version-labels">Using version labels</h2>
 <div class="codehilite"><pre><span class="n">Page</span> <span class="n">page</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Page</span><span class="p">();</span>
 <span class="n">page</span><span class="o">.</span><span class="n">setPath</span><span class="p">(</span><span class="s">&quot;/page&quot;</span><span class="p">);</span>
 <span class="n">page</span><span class="o">.</span><span class="n">setTitle</span><span class="p">(</span><span class="s">&quot;Page Title&quot;</span><span class="p">);</span>

Modified: websites/staging/jackrabbit/trunk/content/repository-server-howto.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/repository-server-howto.html (original)
+++ websites/staging/jackrabbit/trunk/content/repository-server-howto.html Mon Dec 31 12:22:48 2012
@@ -45,7 +45,7 @@ for instructions on how to setup such a 
 performance. You will probably experience major performance issues if you
 try running any non-trivial applications on top of JCR-RMI.</p>
 <p><a name="RepositoryServerHOWTO-Tomcatinstructions"></a></p>
-<h2 id="tomcat_instructions">Tomcat instructions</h2>
+<h2 id="tomcat-instructions">Tomcat instructions</h2>
 <p>Follow the steps below to setup a model 3 JCR-RMI client deployment for
 your web application in Tomcat 4.x or 5.x. Example code for both versions
 of Tomcat is included after this overview.</p>
@@ -59,7 +59,7 @@ jar) under <em>Tomcat folder</em>/webapp
 <li>Register the JCR-RMI client repository factory in the context scope.</li>
 </ol>
 <p><a name="RepositoryServerHOWTO-Step2-Contextconfiguration"></a></p>
-<h3 id="step_2_-_context_configuration">Step 2 - Context configuration</h3>
+<h3 id="step-2-context-configuration">Step 2 - Context configuration</h3>
 <p>In Tomcat 4.x and 5.0, add the following snippet in server.xml under the
 Context element of your web application.</p>
 <div class="codehilite"><pre><span class="nt">&lt;Resource</span> <span class="na">name=</span><span class="s">&quot;jcr/repository&quot;</span>

Modified: websites/staging/jackrabbit/trunk/content/search-implementation.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/search-implementation.html (original)
+++ websites/staging/jackrabbit/trunk/content/search-implementation.html Mon Dec 31 12:22:48 2012
@@ -39,7 +39,7 @@ than SQL, because of the hierarchical st
 <li>Utilities</li>
 </ul>
 <p><a name="Searchimplementation-XPathParser"></a></p>
-<h2 id="xpath_parser">XPath Parser</h2>
+<h2 id="xpath-parser">XPath Parser</h2>
 <p>The XPath query parser is based on the W3C XQuery grammar definition which
 is not yet final but can be downloaded as draft here. The reason why
 Jackrabbit uses the XQuery grammar, rather than the XPath grammar, is, that
@@ -52,13 +52,13 @@ which uses the grammar that can be found
 XPath statement is then translated into an Abstract Query Tree. See class:
 org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder</p>
 <p><a name="Searchimplementation-SQLParser"></a></p>
-<h2 id="sql_parser">SQL Parser</h2>
+<h2 id="sql-parser">SQL Parser</h2>
 <p>The SQL query parser is generated from a grammar definition located in
 src/grammar/sql. After parsing, the Abstract Syntax Tree is translated into
 the Jackrabbit internal Abstract Query Tree. See class:
 org.apache.jackrabbit.core.query.sql.JCRSQLQueryBuilder</p>
 <p><a name="Searchimplementation-AbstractQueryTree"></a></p>
-<h2 id="abstract_query_tree">Abstract Query Tree</h2>
+<h2 id="abstract-query-tree">Abstract Query Tree</h2>
 <p>The Abstract Query Tree (AQT) is the common query description format that
 allows Jackrabbit to implement a query engine which is (to a certain
 extent) independent of the query syntax used (XPath or SQL). The AQT
@@ -67,7 +67,7 @@ org.apache.jackrabbit.core.query.QueryNo
 <p>Please note that the AQT is Jackrabbit internal and not exposed to a client
 using the JCR API!</p>
 <p><a name="Searchimplementation-QueryEngine"></a></p>
-<h2 id="query_engine">Query Engine</h2>
+<h2 id="query-engine">Query Engine</h2>
 <p>Now this is where the meat is. The actual implementation of the query
 engine is configurable. One needs to implement the interface:
 org.apache.jackrabbit.core.query.QueryHandler. Jackrabbit comes with an

Modified: websites/staging/jackrabbit/trunk/content/shared-j2ee-resource-howto.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/shared-j2ee-resource-howto.html (original)
+++ websites/staging/jackrabbit/trunk/content/shared-j2ee-resource-howto.html Mon Dec 31 12:22:48 2012
@@ -32,7 +32,7 @@ used by multiple different applications.
 <p>This how-to contains instructions for Tomcat versions 4.x and 5.x. It
 should be easy to modify the instructions for other container environments.</p>
 <p><a name="SharedJ2EEResourceHOWTO-Tomcatinstructions"></a></p>
-<h2 id="tomcat_instructions">Tomcat instructions</h2>
+<h2 id="tomcat-instructions">Tomcat instructions</h2>
 <p>Follow the steps below to setup a model 2 Jackrabbit deployment for your
 Tomcat 4.x or 5.x installation. Example code for both versions of Tomcat is
 included after this overview.</p>
@@ -43,7 +43,7 @@ API jar file) under <em>Tomcat folder</e
 <li>Link the global resource to a context scoped JNDI address.</li>
 </ol>
 <p><a name="SharedJ2EEResourceHOWTO-Step2-Resourceconfiguration"></a></p>
-<h3 id="step_2_-_resource_configuration">Step 2 - Resource configuration</h3>
+<h3 id="step-2-resource-configuration">Step 2 - Resource configuration</h3>
 <p>Note: This step is essentially the same as step 2 in the Model 1 HOWTO. The
 only differences are in the (arbitrary) naming of the resource and placing
 of the configuration elements. The difference in the end result is that the
@@ -86,7 +86,7 @@ GlobalNamingResources element.</p>
               repHomeDir="[full path to the repository home folder]
 "/&gt;</p>
 <p><a name="SharedJ2EEResourceHOWTO-Step3-Resourcelink"></a></p>
-<h3 id="step_3_-_resource_link">Step 3 - Resource link</h3>
+<h3 id="step-3-resource-link">Step 3 - Resource link</h3>
 <p>In Tomcat versions 4.x and 5.0, add the following snippet in server.xml
 under the Context element of your web application. In Tomcat version 5.5,
 add the snippet in your application's context.xml or

Modified: websites/staging/jackrabbit/trunk/content/standalone-server.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/standalone-server.html (original)
+++ websites/staging/jackrabbit/trunk/content/standalone-server.html Mon Dec 31 12:22:48 2012
@@ -31,7 +31,7 @@ rest of this page documents what else yo
 server.</p>
 <p>{toc:minLevel=2}</p>
 <p><a name="StandaloneServer-Runningthestandaloneserver"></a></p>
-<h2 id="running_the_standalone_server">Running the standalone server</h2>
+<h2 id="running-the-standalone-server">Running the standalone server</h2>
 <p>You need Java version 5 or higher to run the Jackrabbit standalone server.
 To start the server, double-click on the standalone jar file, or invoke it
 on the command line.</p>

Modified: websites/staging/jackrabbit/trunk/content/welcome-to-apache-jackrabbit.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/welcome-to-apache-jackrabbit.html (original)
+++ websites/staging/jackrabbit/trunk/content/welcome-to-apache-jackrabbit.html Mon Dec 31 12:22:48 2012
@@ -39,7 +39,7 @@ structured and unstructured content, ful
 transactions, observation, and more.</p>
 <p>Apache Jackrabbit is a project of the <a href="http://www.apache.org/">Apache Software Foundation</a>
 <a name="WelcometoApacheJackrabbit-ApacheJackrabbitNews"></a></p>
-<h2 id="apache_jackrabbit_news">Apache Jackrabbit News</h2>
+<h2 id="apache-jackrabbit-news">Apache Jackrabbit News</h2>
 <p><strong>January 2nd, 2012: Apache Jackrabbit 2.3.6 released</strong>
 Apache Jackrabbit 2.3 is an unstable series of releases cut directly from
 Jackrabbit trunk, with a focus on new features and other improvements.