jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tri...@apache.org
Subject svn commit: r1671485 [3/4] - in /jackrabbit/site/trunk: ./ src/site/markdown/ src/site/markdown/components/ src/site/markdown/concurrency-control/ src/site/markdown/deployment-models/ src/site/markdown/how-jackrabbit-works/ src/site/markdown/index-read...
Date Mon, 06 Apr 2015 05:53:59 GMT
Modified: jackrabbit/site/trunk/src/site/markdown/node-type-notation.md
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/node-type-notation.md?rev=1671485&r1=1671484&r2=1671485&view=diff
==============================================================================
--- jackrabbit/site/trunk/src/site/markdown/node-type-notation.md (original)
+++ jackrabbit/site/trunk/src/site/markdown/node-type-notation.md Mon Apr  6 05:53:57 2015
@@ -1,12 +1,29 @@
-Title: Node Type Notation
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+Node Type Notation
+==================
 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).
 
-Here is a "worst-case scenario" example that demonstrates all the features
-of the notation:
+Here is a "worst-case scenario" example that demonstrates all the features of the notation:
 
 
     /*  An example node type definition */
@@ -26,8 +43,7 @@ of the notation:
     // This is a mixin node type
     mixin
     
-    // Nodes of this node type have a property called 'ex:property' of type
-STRING
+    // Nodes of this node type have a property called 'ex:property' of type STRING
     - ex:property (string)
     
     // The default values for this
@@ -49,8 +65,7 @@ STRING
     // The constraint settings are...
     < 'constraint1', 'constraint2'
     
-    // Nodes of this node type have a child node called ns:node which must be
-of
+    // Nodes of this node type have a child node called ns:node which must be of
     // at least the node types ns:reqType1 and ns:reqType2
     + ns:node (ns:reqType1, ns:reqType2)
     
@@ -72,8 +87,7 @@ This definition can be written more comp
 
     /*  An example node type definition */
     <ns = 'http://namespace.com/ns'>
-    [ns:NodeType]
- > ns:ParentType1, ns:ParentType2
+    [ns:NodeType] > ns:ParentType1, ns:ParentType2
       orderable mixin
       - ex:property (string)
       = 'default1', 'default2'
@@ -89,54 +103,31 @@ or, using short forms for the attributes
 
 
     <ns='http://namespace.com/ns'>
-    [ns:NodeType]
->ns:ParentType1, ns:ParentType2 o m
-    -ex:property='default1','default2' ! m a p * version
-     <'constraint1', 'constraint2'
-    +ns:node(ns:reqType1,ns:reqType2)=ns:defaultType
-     m a p *  version
+    [ns:NodeType] >ns:ParentType1, ns:ParentType2 o m
+      - ex:property='default1','default2' ! m a p * version <'constraint1', 'constraint2'
+      + ns:node(ns:reqType1,ns:reqType2)=ns:defaultType m a p *  version
 
 
-<a name="NodeTypeNotation-Grammar"></a>
-## Grammar
 
-The following grammar defines the CND notation. Terminal symbols are in
-double quotes.
+Grammar
+-------
+The following grammar defines the CND notation. Terminal symbols are in double quotes.
 
 
     cnd ::= {ns_mapping | node_type_def}
-    
     ns_mapping ::= "<" prefix "=" uri ">"
-    
     prefix ::= string
-    
     uri ::= string
-    
-    node_type_def ::= node_type_name [supertypes]
- [options]
-    		  {property_def | child_node_def}
-    
-    node_type_name ::= "[" string "]
-"
-    
+    node_type_def ::= node_type_name [supertypes] [options] {property_def | child_node_def}
+    node_type_name ::= "[" string "]"
     supertypes ::= ">" string_list
-    
     options ::= orderable_opt | mixin_opt | orderable_opt
     	    mixin_opt | mixin_opt orderable_opt
-    
     orderable_opt ::= "orderable" | "ord" | "o"
-    
     mixin_opt ::= "mixin" | "mix" | "m"
-    
-    property_def ::= "-" property_name [property_type_decl]
-     [default_values]
- [attributes]
-     [value_constraints]
-    
+    property_def ::= "-" property_name [property_type_decl] [default_values] [attributes] [value_constraints]
     property_name ::= string
-    
     property_type_decl ::= "(" property_type ")"
-    
     property_type ::= "STRING" | "String" |"string" |
     		  "BINARY" | "Binary" | "binary" |
     		  "LONG" | "Long" | "long" |
@@ -145,25 +136,15 @@ double quotes.
     		  "DATE" | "Date" | "date" |
     		  "NAME | "Name | "name" |
     		  "PATH" | "Path" | "path" |
-    		  "REFERENCE" | "Reference" |
-    		     "reference" |
-    		  "UNDEFINED" | "Undefined" |
-    		     "undefined" | "*"
+    		  "REFERENCE" | "Reference" | "reference" |
+    		  "UNDEFINED" | "Undefined" | "undefined" | "*"
     
     default_values ::= "=" string_list
-    
     value_constraints ::= "<" string_list
-    
-    node_def ::= "+" node_name [required_types]
-     [default_type]
- [attributes]
-    
+    node_def ::= "+" node_name [required_types] [default_type] [attributes]
     node_name ::= string
-    
     required_types ::= "(" string_list ")"
-    
     default_type ::= "=" string
-    
     attributes ::= "primary" | "pri" | "!" |
     	       "autocreated" | "aut" | "a" |
     	       "mandatory" | "man" | "m" |
@@ -171,70 +152,51 @@ double quotes.
     	       "multiple" | "mul" | "*" |
     	       "COPY" | "Copy" | "copy" |
     	       "VERSION" | "Version" | "version" |
-    	       "INITIALIZE" | "Initialize" |
-    		  "initialize" |
+    	       "INITIALIZE" | "Initialize" | "initialize" |
     	       "COMPUTE" | "Compute" | "compute" |
     	       "IGNORE" | "Ignore" | "ignore" |
     	       "ABORT" | "Abort" | "abort"
-    
     string_list ::= string {"," string}
-    
     string ::= quoted_string | unquoted_string
-    
     quoted_string :: = "'" unquoted_string "'"
-    
-    unquoted_string ::= [A-Za-z0-9:_]
-+
+    unquoted_string ::= [A-Za-z0-9:_]+
 
 
-<a name="NodeTypeNotation-CNDNotationinDetail"></a>
-## CND Notation in Detail
-
+CND Notation in Detail
+----------------------
 
     cnd ::= {ns_mapping | node_type_def}
 
-
 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.
 
-<a name="NodeTypeNotation-NamespaceDeclaration"></a>
-### Namespace Declaration
 
+### Namespace Declaration
 
     ns_mapping ::= "<" prefix "=" uri ">"
-    
     prefix ::= string
-    
     uri ::= string
 
-
 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.
 
-<a name="NodeTypeNotation-NodeTypeDefinition"></a>
-### Node Type Definition
-
 
-    node_type_def ::= node_type_name [super_types]
- [options]
-    		  {property_def | child_node_def}
+### Node Type Definition
 
+    node_type_def ::= node_type_name [super_types] [options] {property_def | child_node_def}
 
 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.
 
-<a name="NodeTypeNotation-NodeTypeName"></a>
-### Node Type Name
-
 
-    node_type_name ::= "[" string "]
-"
+### Node Type Name
 
+    node_type_name ::= "[" string "]" 
 
 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
@@ -242,13 +204,11 @@ only strictly required element within a
 definition consisting only of a node type name would simply define a new
 node type identical to nt:base.
 
-<a name="NodeTypeNotation-Supertypes"></a>
-### Supertypes
 
+### Supertypes
 
     supertypes ::= ">" string_list
 
-
 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
@@ -257,20 +217,14 @@ type names, each of which may optionally
 below). In Jackrabbit, multiple inheritance of node types is supported, so
 this list can be greater than one item in length.
 
-<a name="NodeTypeNotation-Options"></a>
-### Options
 
+### Options
 
-    options ::= orderable_opt | mixin_opt | orderable_opt
-    	    mixin_opt | mixin_opt orderable_opt
-    
+    options ::= orderable_opt | mixin_opt | orderable_opt mixin_opt | mixin_opt orderable_opt
     orderable_opt ::= "orderable" | "ord" | "o"
-    
     mixin_opt ::= "mixin" | "mix" | "m"
 
-
-The option indicators follow the node type name and optional supertype
-list.
+The option indicators follow the node type name and optional supertype list.
 
 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,
@@ -279,36 +233,27 @@ then the setting is false.
 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.
 
-<a name="NodeTypeNotation-PropertyDefinition"></a>
-### Property Definition
-
 
-    property_def ::= "-" property_name [property_type_decl]
-     [default_values]
- [attributes]
-     [value_constraints]
+### Property Definition
 
+    property_def ::= "-" property_name [property_type_decl] [default_values] [attributes] [value_constraints]
 
 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.
 
-<a name="NodeTypeNotation-PropertyName"></a>
-### Property Name
 
+### Property Name
 
     property_name ::= string
 
-
 The property name must be a valid JCR name or *, to indicate a residual
 property definition. It may be single-quoted.
 
-<a name="NodeTypeNotation-PropertyType"></a>
-### Property Type
 
+### Property Type
 
     property_type_decl ::= "(" property_type ")"
-    
     property_type ::= "STRING" | "String |"string" |
     		  "BINARY" | "Binary" | "binary" |
     		  "LONG" | "Long" | "long" |
@@ -320,25 +265,21 @@ property definition. It may be single-qu
     		  "REFERENCE" | "Reference" | "reference" |
     		  "UNDEFINED" | "Undefined" | "undefined" | "*"
 
-
 The property type is indicated by a keyword delimited by parentheses. If
 the property type declaration is missing a type of STRING is assumed.
 
-<a name="NodeTypeNotation-DefaultValues"></a>
-### Default Values
 
+### Default Values
 
     default_values ::= "=" string_list
 
-
 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.
 
-<a name="NodeTypeNotation-Attributes"></a>
-### Attributes
 
+### Attributes
 
     attributes ::= "primary" | "pri" | "!" |
     	       "autocreated" | "aut" | "a" |
@@ -352,7 +293,6 @@ the default value definition is missing
     	       "IGNORE" | "Ignore" | "ignore" |
     	       "ABORT" | "Abort" | "abort"
 
-
 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
@@ -367,65 +307,52 @@ The multiple keyword indicates that this
 A maximum of one on-version indicator may be present. If none is present
 then an on-version setting of COPY is assumed.
 
-<a name="NodeTypeNotation-ValueConstraints"></a>
-### Value Constraints
 
+### Value Constraints
 
     value_constraints ::= "<" string_list
 
-
 Value constraint are specified by a less-than sign followed by a
 comma-delimited list of constraint strings, each optionally single-quoted.
 
-<a name="NodeTypeNotation-ChildNodeDefinition"></a>
-### Child Node Definition
 
+### Child Node Definition
 
-    child_node_def ::= "+" node_name [required_types]
-     [default_type]
- [attributes]
-
+    child_node_def ::= "+" node_name [required_types] [default_type] [attributes] 
 
 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.
 
-<a name="NodeTypeNotation-NodeName"></a>
-### Node Name
 
+### Node Name
 
     node_name ::= string
 
-
-The node name must be a valid JCR name or *, to indicate a residual child
+The node name must be a valid JCR name or `*`, to indicate a residual child
 node definition. It may be single-quoted.
 
-<a name="NodeTypeNotation-RequiredPrimaryNodeTypes"></a>
-### Required Primary Node Types
 
+### Required Primary Node Types
 
     required_types ::= "(" string_list ")"
 
-
 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.
 
-<a name="NodeTypeNotation-DefaultPrimaryNodeType"></a>
-### Default Primary Node Type
 
+### Default Primary Node Type
 
     default_type ::= "=" string
 
-
 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.
 
-<a name="NodeTypeNotation-Attributes"></a>
-### Attributes
 
+### Attributes
 
     attributes ::= "primary" | "pri" | "!" |
     	       "autocreated" | "aut" | "a" |
@@ -439,7 +366,6 @@ no default primary node type is set.
     	       "IGNORE" | "Ignore" | "ignore" |
     	       "ABORT" | "Abort" | "abort"
 
-
 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
@@ -455,29 +381,22 @@ siblings.
 A maximum of one on-version indicator may be present. If none is present
 then an on-version setting of COPY is assumed.
 
-<a name="NodeTypeNotation-Quoting"></a>
-### Quoting
 
+### Quoting
 
     string_list ::= string {"," string}
-    
     string ::= quoted_string | unquoted_string
-    
     quoted_string :: = "'" unquoted_string "'"
-    
     unquoted_string ::= /* a string */
 
-
-Single quotes (') are used to allow for strings (i.e., names, prefixes,
+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.
 
-<a name="NodeTypeNotation-Escaping"></a>
-### Escaping
 
+### Escaping
 The standard Java escape sequences are also supported:
 
-
     \n newline
     \t tab
     \b backspace
@@ -489,52 +408,36 @@ The standard Java escape sequences are a
     \uHHHH Unicode character in hexadecimal
 
 
-<a name="NodeTypeNotation-Comments"></a>
 ### Comments
-
 Comment can also be included in the notation using either of the standard
 Java forms:
 
-
     // A comment
-    
     /* Another comment */
 
-
-<a name="NodeTypeNotation-WhitespaceandShortForms"></a>
 ### Whitespace and Short Forms
-
-The notation can be compacted by taking advantage of the following the fact that spacing around keychars ([ ](-.html)
- > , - ( ) = <), newlines and indentation are not required. So, the
+The notation can be compacted by taking advantage of the following the fact that spacing around keychars 
+(`[ ] > , - ( ) = <`), newlines and indentation are not required. So, the
 following is also well-formed:
 
-
-    [x]
->y,z orderable mixin -p(date)=a,b primary mandatory autocreated protected
-multiple version <c,d
-
+    [x] >y,z orderable mixin -p(date)=a,b primary mandatory autocreated protected multiple version <c,d
 
 Additionally, though spaces are required around the keywords (orderable,
 mixin, date, mandatory, etc.), short forms for keywords can be used. So,
 this:
 
-
-    [x]
->y,z o m-p(date)=a,b ! m a p * version <c,d
-
+    [x] >y,z o m-p(date)=a,b ! m a p * version <c,d
 
 is well-formed (but perhaps not recommended!).
 
-<a name="NodeTypeNotation-WhythisWeirdNotation?"></a>
-### Why this Weird Notation?
 
+### Why this Weird Notation?
 Here's why:
 
 Old Documentation Notation
 
 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):
+documentation notation (used in v1.0 of the JCR specification, for example):
 
 
     NodeTypeName
@@ -639,9 +542,7 @@ New Format
 
 And, here it is in the new CND notation:
 
-
-    [nt:resource]
- > mix:referenceable
+    [nt:resource] > mix:referenceable
     - jcr:encoding
     - jcr:mimeType mandatory
     - jcr:data (binary) mandatory
@@ -650,7 +551,6 @@ And, here it is in the new CND notation:
 
 Case closed.
 
-<a name="NodeTypeNotation-Syntaxhightlightingfortexteditors"></a>
-## Syntax hightlighting for text editors
-
-Here is a TextMate bundle for CND syntax highlighting: [^CND.zip](^cnd.zip.html)
+Syntax highlighting for text editors
+------------------------------------
+Here is a TextMate bundle for CND syntax highlighting: [CND.zip](node-type-notation/cnd.zip)

Added: jackrabbit/site/trunk/src/site/markdown/node-type-notation/CND.zip
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/node-type-notation/CND.zip?rev=1671485&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/trunk/src/site/markdown/node-type-notation/CND.zip
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: jackrabbit/site/trunk/src/site/markdown/node-type-visualization.md
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/node-type-visualization.md?rev=1671485&r1=1671484&r2=1671485&view=diff
==============================================================================
--- jackrabbit/site/trunk/src/site/markdown/node-type-visualization.md (original)
+++ jackrabbit/site/trunk/src/site/markdown/node-type-visualization.md Mon Apr  6 05:53:57 2015
@@ -1,11 +1,29 @@
-Title: Node Type Visualization
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+Node Type Visualization
+=======================
 Visualizing the Node Type Hierarchy is non-trivial, even in the case of a
 repository containing only the default Jackrabbit node types. Here,
 GraphViz can help:
 
-!jackrabbit-nodetypes.png!
-Node Type Hierarchy for Jackrabbit ([SVG version](^jackrabbit-nodetypes.svg.html)
-)
+![Jackrabbit Nodetypes](node-type-visualization/jackrabbit-nodetypes.png)
+
+Node Type Hierarchy for Jackrabbit ([SVG version](node-type-visualization/jackrabbit-nodetypes.svg))
 
 In this diagram, the rounded boxes represent node types (green for mixins,
 gold for primrary types), with the arrows indicating the node inheritance.
@@ -13,10 +31,9 @@ The square boxes represent child node an
 
 To generate these diagrams, you will need:
 
-1. A system view export of "/jcr:system/jcr:nodeTypes".
+1. A system view export of `/jcr:system/jcr:nodeTypes`.
 1. An XSLT processor and the XSLT code below.
-1. The [GraphViz](http://graphviz.org/)
- tool
+1. The [GraphViz](http://graphviz.org/) tool
 
 
     <!--
@@ -69,48 +86,38 @@ To generate these diagrams, you will nee
     <xsl:template match="/">
       <xsl:text>digraph {&#10;</xsl:text>
       <xsl:text>  rankdir=LR;&#10;</xsl:text>
-      <xsl:apply-templates select="//sv:node[sv:property[@sv:name='jcr:primaryType']
-/sv:value='nt:nodeType']"/>
+      <xsl:apply-templates select="//sv:node[sv:property[@sv:name='jcr:primaryType']/sv:value='nt:nodeType']"/>
       <xsl:text>}&#10;</xsl:text>
     </xsl:template>
     
-    <xsl:template match="sv:node[sv:property[@sv:name='jcr:primaryType']
-/sv:value='nt:nodeType']">
+    <xsl:template match="sv:node[sv:property[@sv:name='jcr:primaryType']/sv:value='nt:nodeType']">
       <xsl:text>  "</xsl:text>
       <xsl:value-of select="@sv:name"/>
       <xsl:text>" </xsl:text>
       <xsl:choose>
-        <xsl:when test="sv:property[@sv:name='jcr:isMixin']
-/sv:value='true'">
-          <xsl:text>[style = "filled, rounded", fillcolor = greenyellow]
-;</xsl:text>
+        <xsl:when test="sv:property[@sv:name='jcr:isMixin'] /sv:value='true'">
+          <xsl:text>[style = "filled, rounded", fillcolor = greenyellow];</xsl:text>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:text>[style = "filled, rounded", fillcolor = gold]
-;</xsl:text>
+          <xsl:text>[style = "filled, rounded", fillcolor = gold] ;</xsl:text>
         </xsl:otherwise>
       </xsl:choose>
       <xsl:text>&#10;</xsl:text>
       
-      <xsl:for-each select="sv:property[@sv:name='jcr:supertypes']
-/sv:value">
+      <xsl:for-each select="sv:property[@sv:name='jcr:supertypes']/sv:value">
         <xsl:text>	"</xsl:text>
         <xsl:value-of select="."/>
         <xsl:text>" -> "</xsl:text>
         <xsl:value-of select="../../@sv:name"/>
-        <xsl:text>" [dir = back, tooltip = "supertype"]
-;&#10;</xsl:text>
+        <xsl:text>" [dir = back, tooltip = "supertype"] ;&#10;</xsl:text>
       </xsl:for-each>
       
-      <xsl:for-each select="sv:node[@sv:name='jcr:childNodeDefinition']
-">
+      <xsl:for-each select="sv:node[@sv:name='jcr:childNodeDefinition']">
       
         <xsl:variable name="name">
           <xsl:choose>
-            <xsl:when test="sv:property[@sv:name='jcr:name']
-">
-              <xsl:value-of select="sv:property[@sv:name='jcr:name']
-/sv:value"/>
+            <xsl:when test="sv:property[@sv:name='jcr:name']">
+              <xsl:value-of select="sv:property[@sv:name='jcr:name']/sv:value"/>
     	</xsl:when>
     	<xsl:otherwise>*</xsl:otherwise>
           </xsl:choose>
@@ -118,32 +125,26 @@ To generate these diagrams, you will nee
     
         <xsl:variable name="id" select="generate-id()"/>
         
-        <xsl:value-of select="concat('  &quot;',$id,'&quot; [shape = box, style = filled, fillcolor = khaki, label=&quot;',$name,'&quot;]
- &#10;')"/>
+        <xsl:value-of select="concat('  &quot;',$id,'&quot; [shape = box, style = filled, fillcolor = khaki, label=&quot;',$name,'&quot;]&#10;')"/>
         
         <xsl:text>	"</xsl:text>
         <xsl:value-of select="../@sv:name"/>
         <xsl:text>" -> "</xsl:text>
         <xsl:value-of select="$id"/>
         <xsl:choose>
-          <xsl:when test="sv:property[@sv:name='jcr:mandatory']
-/sv:value='true'">
-    	<xsl:text>" [tooltip = "is mandatory child node of", dir = back]
-;&#10;</xsl:text>
+          <xsl:when test="sv:property[@sv:name='jcr:mandatory']/sv:value='true'">
+    	<xsl:text>" [tooltip = "is mandatory child node of", dir = back];&#10;</xsl:text>
           </xsl:when>
           <xsl:otherwise>
-    	<xsl:text>" [style = dotted, tooltip = "is child node of", dir = back]
-;&#10;</xsl:text>
+    	<xsl:text>" [style = dotted, tooltip = "is child node of", dir = back];&#10;</xsl:text>
           </xsl:otherwise>
         </xsl:choose>
         
         <xsl:text>	"</xsl:text>
-        <xsl:value-of select="sv:property[@sv:name='jcr:requiredPrimaryTypes']
-/sv:value"/>
+        <xsl:value-of select="sv:property[@sv:name='jcr:requiredPrimaryTypes']/sv:value"/>
         <xsl:text>" -> "</xsl:text>
         <xsl:value-of select="$id"/>
-        <xsl:text>" [dir = back, tooltip = "has primary type"]
-;&#10;</xsl:text>
+        <xsl:text>" [dir = back, tooltip = "has primary type"];&#10;</xsl:text>
     
       </xsl:for-each>
       

Added: jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.png?rev=1671485&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.svg
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.svg?rev=1671485&view=auto
==============================================================================
--- jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.svg (added)
+++ jackrabbit/site/trunk/src/site/markdown/node-type-visualization/jackrabbit-nodetypes.svg Mon Apr  6 05:53:57 2015
@@ -0,0 +1,622 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+ <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Generated by dot version 2.8 (Fri Feb  3 22:38:53 UTC 2006)
+     For user: John Doe -->
+<!-- Title: _anonymous_0 Pages: 1 -->
+<svg width="626pt" height="1129pt"
+ viewBox = "0 0 626 1129"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" style="font-family:Times-Roman;font-size:14.00;">
+<title>_anonymous_0</title>
+<polygon style="fill:white;stroke:white;" points="-2,1131 -2,-2 628,-2 628,1131 -2,1131"/>
+<!-- rep:versionStorage -->
+<g id="node1" class="node"><title>rep:versionStorage</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="384" rx="66" ry="18"/>
+<text text-anchor="middle" x="244" y="389">rep:versionStorage</text>
+</g>
+<!-- d0e22 -->
+<g id="node4" class="node"><title>d0e22</title>
+<polygon style="fill:khaki;stroke:black;" points="460,366 406,366 406,402 460,402 460,366"/>
+<text text-anchor="middle" x="433" y="389">*</text>
+</g>
+<!-- rep:versionStorage&#45;&gt;d0e22 -->
+<g id="edge4" class="edge"><title>rep:versionStorage&#45;&gt;d0e22</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M316,390C348,391 383,391 406,389"/>
+<polygon style="fill:black;stroke:black;" points="316,393 306,390 316,386 316,393"/>
+</a>
+</g>
+<!-- rep:versionStorage&#45;&gt;d0e22 -->
+<g id="edge6" class="edge"><title>rep:versionStorage&#45;&gt;d0e22</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M316,378C348,377 383,377 406,379"/>
+<polygon style="fill:black;stroke:black;" points="316,381 306,378 316,374 316,381"/>
+</a>
+</g>
+<!-- d0e48 -->
+<g id="node7" class="node"><title>d0e48</title>
+<polygon style="fill:khaki;stroke:black;" points="460,258 406,258 406,294 460,294 460,258"/>
+<text text-anchor="middle" x="433" y="281">*</text>
+</g>
+<!-- rep:versionStorage&#45;&gt;d0e48 -->
+<g id="edge8" class="edge"><title>rep:versionStorage&#45;&gt;d0e48</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M272,361C294,343 327,319 358,303 373,295 391,288 406,284"/>
+<polygon style="fill:black;stroke:black;" points="274,364 264,367 270,358 274,364"/>
+</a>
+</g>
+<!-- d0e2255 -->
+<g id="node90" class="node"><title>d0e2255</title>
+<polygon style="fill:khaki;stroke:black;" points="492,604 374,604 374,640 492,640 492,604"/>
+<text text-anchor="middle" x="433" y="627">jcr:versionStorage</text>
+</g>
+<!-- rep:versionStorage&#45;&gt;d0e2255 -->
+<g id="edge110" class="edge"><title>rep:versionStorage&#45;&gt;d0e2255</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M264,410C281,433 305,466 322,499 343,539 326,562 358,595 363,599 368,603 373,606"/>
+<polygon style="fill:black;stroke:black;" points="261,412 258,402 267,408 261,412"/>
+</a>
+</g>
+<!-- nt:base -->
+<g id="node2" class="node"><title>nt:base</title>
+<ellipse style="fill:gold;stroke:black;" cx="67" cy="580" rx="33" ry="18"/>
+<text text-anchor="middle" x="67" y="585">nt:base</text>
+</g>
+<!-- nt:base&#45;&gt;rep:versionStorage -->
+<g id="edge2" class="edge"><title>nt:base&#45;&gt;rep:versionStorage</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M77,553C92,517 122,453 166,416 175,408 187,402 198,397"/>
+<polygon style="fill:black;stroke:black;" points="80,554 73,562 74,551 80,554"/>
+</a>
+</g>
+<!-- nt:versionHistory -->
+<g id="node9" class="node"><title>nt:versionHistory</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="184" rx="61" ry="18"/>
+<text text-anchor="middle" x="244" y="189">nt:versionHistory</text>
+</g>
+<!-- nt:base&#45;&gt;nt:versionHistory -->
+<g id="edge34" class="edge"><title>nt:base&#45;&gt;nt:versionHistory</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M72,552C83,475 119,262 166,211 174,203 183,198 193,194"/>
+<polygon style="fill:black;stroke:black;" points="75,553 70,562 69,552 75,553"/>
+</a>
+</g>
+<!-- nt:versionedChild -->
+<g id="node12" class="node"><title>nt:versionedChild</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="672" rx="63" ry="18"/>
+<text text-anchor="middle" x="244" y="677">nt:versionedChild</text>
+</g>
+<!-- nt:base&#45;&gt;nt:versionedChild -->
+<g id="edge12" class="edge"><title>nt:base&#45;&gt;nt:versionedChild</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M97,599C117,612 143,628 166,640 179,646 193,652 206,657"/>
+<polygon style="fill:black;stroke:black;" points="96,602 89,594 99,596 96,602"/>
+</a>
+</g>
+<!-- nt:versionLabels -->
+<g id="node14" class="node"><title>nt:versionLabels</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="292" rx="59" ry="18"/>
+<text text-anchor="middle" x="244" y="297">nt:versionLabels</text>
+</g>
+<!-- nt:base&#45;&gt;nt:versionLabels -->
+<g id="edge14" class="edge"><title>nt:base&#45;&gt;nt:versionLabels</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M70,552C78,500 103,389 166,324 175,315 187,308 198,304"/>
+<polygon style="fill:black;stroke:black;" points="73,552 69,562 67,552 73,552"/>
+</a>
+</g>
+<!-- nt:childNodeDefinition -->
+<g id="node16" class="node"><title>nt:childNodeDefinition</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="984" rx="77" ry="18"/>
+<text text-anchor="middle" x="244" y="989">nt:childNodeDefinition</text>
+</g>
+<!-- nt:base&#45;&gt;nt:childNodeDefinition -->
+<g id="edge16" class="edge"><title>nt:base&#45;&gt;nt:childNodeDefinition</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M71,608C82,687 118,904 166,957 172,963 180,968 188,972"/>
+<polygon style="fill:black;stroke:black;" points="68,608 70,598 74,608 68,608"/>
+</a>
+</g>
+<!-- nt:hierarchyNode -->
+<g id="node20" class="node"><title>nt:hierarchyNode</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="526" rx="62" ry="18"/>
+<text text-anchor="middle" x="244" y="531">nt:hierarchyNode</text>
+</g>
+<!-- nt:base&#45;&gt;nt:hierarchyNode -->
+<g id="edge20" class="edge"><title>nt:base&#45;&gt;nt:hierarchyNode</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M106,568C134,559 172,548 201,539"/>
+<polygon style="fill:black;stroke:black;" points="107,571 96,571 105,565 107,571"/>
+</a>
+</g>
+<!-- d0e693 -->
+<g id="node24" class="node"><title>d0e693</title>
+<polygon style="fill:khaki;stroke:black;" points="621,435 545,435 545,471 621,471 621,435"/>
+<text text-anchor="middle" x="583" y="458">jcr:content</text>
+</g>
+<!-- nt:base&#45;&gt;d0e693 -->
+<g id="edge26" class="edge"><title>nt:base&#45;&gt;d0e693</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M89,557C109,538 137,513 166,499 293,434 468,441 544,449"/>
+<polygon style="fill:black;stroke:black;" points="92,559 82,564 87,554 92,559"/>
+</a>
+</g>
+<!-- nt:resource -->
+<g id="node27" class="node"><title>nt:resource</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="76" rx="44" ry="18"/>
+<text text-anchor="middle" x="244" y="81">nt:resource</text>
+</g>
+<!-- nt:base&#45;&gt;nt:resource -->
+<g id="edge30" class="edge"><title>nt:base&#45;&gt;nt:resource</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M69,552C77,460 106,171 166,103 175,93 189,86 202,82"/>
+<polygon style="fill:black;stroke:black;" points="72,552 68,562 66,552 72,552"/>
+</a>
+</g>
+<!-- nt:version -->
+<g id="node34" class="node"><title>nt:version</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="130" rx="41" ry="18"/>
+<text text-anchor="middle" x="244" y="135">nt:version</text>
+</g>
+<!-- nt:base&#45;&gt;nt:version -->
+<g id="edge50" class="edge"><title>nt:base&#45;&gt;nt:version</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M70,552C80,467 113,216 166,157 176,146 191,140 205,136"/>
+<polygon style="fill:black;stroke:black;" points="73,552 69,562 67,552 73,552"/>
+</a>
+</g>
+<!-- nt:frozenNode -->
+<g id="node46" class="node"><title>nt:frozenNode</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="238" rx="53" ry="18"/>
+<text text-anchor="middle" x="244" y="243">nt:frozenNode</text>
+</g>
+<!-- nt:base&#45;&gt;nt:frozenNode -->
+<g id="edge74" class="edge"><title>nt:base&#45;&gt;nt:frozenNode</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M73,552C86,483 125,307 166,265 174,256 185,250 196,246"/>
+<polygon style="fill:black;stroke:black;" points="76,553 71,562 70,552 76,553"/>
+</a>
+</g>
+<!-- nt:unstructured -->
+<g id="node51" class="node"><title>nt:unstructured</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="1038" rx="55" ry="18"/>
+<text text-anchor="middle" x="244" y="1043">nt:unstructured</text>
+</g>
+<!-- nt:base&#45;&gt;nt:unstructured -->
+<g id="edge80" class="edge"><title>nt:base&#45;&gt;nt:unstructured</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M70,608C80,694 112,950 166,1011 174,1020 185,1025 196,1029"/>
+<polygon style="fill:black;stroke:black;" points="67,608 69,598 73,608 67,608"/>
+</a>
+</g>
+<!-- rep:system -->
+<g id="node55" class="node"><title>rep:system</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="730" rx="43" ry="18"/>
+<text text-anchor="middle" x="244" y="735">rep:system</text>
+</g>
+<!-- nt:base&#45;&gt;rep:system -->
+<g id="edge98" class="edge"><title>nt:base&#45;&gt;rep:system</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M83,606C101,632 131,673 166,699 179,708 194,715 208,719"/>
+<polygon style="fill:black;stroke:black;" points="80,607 77,597 85,603 80,607"/>
+</a>
+</g>
+<!-- rep:nodeTypes -->
+<g id="node57" class="node"><title>rep:nodeTypes</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="822" rx="54" ry="18"/>
+<text text-anchor="middle" x="244" y="827">rep:nodeTypes</text>
+</g>
+<!-- nt:base&#45;&gt;rep:nodeTypes -->
+<g id="edge64" class="edge"><title>nt:base&#45;&gt;rep:nodeTypes</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M78,607C95,644 127,709 166,757 182,776 204,793 220,806"/>
+<polygon style="fill:black;stroke:black;" points="75,609 74,598 81,606 75,609"/>
+</a>
+</g>
+<!-- nt:nodeType -->
+<g id="node61" class="node"><title>nt:nodeType</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="930" rx="48" ry="18"/>
+<text text-anchor="middle" x="244" y="935">nt:nodeType</text>
+</g>
+<!-- nt:base&#45;&gt;nt:nodeType -->
+<g id="edge86" class="edge"><title>nt:base&#45;&gt;nt:nodeType</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M72,608C86,678 124,859 166,903 175,912 188,918 200,922"/>
+<polygon style="fill:black;stroke:black;" points="69,608 70,598 75,607 69,608"/>
+</a>
+</g>
+<!-- nt:propertyDefinition -->
+<g id="node63" class="node"><title>nt:propertyDefinition</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="876" rx="72" ry="18"/>
+<text text-anchor="middle" x="244" y="881">nt:propertyDefinition</text>
+</g>
+<!-- nt:base&#45;&gt;nt:propertyDefinition -->
+<g id="edge70" class="edge"><title>nt:base&#45;&gt;nt:propertyDefinition</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M70,608C77,663 98,781 166,849 173,855 181,860 190,864"/>
+<polygon style="fill:black;stroke:black;" points="67,608 69,598 73,608 67,608"/>
+</a>
+</g>
+<!-- d0e1779 -->
+<g id="node67" class="node"><title>d0e1779</title>
+<polygon style="fill:khaki;stroke:black;" points="460,312 406,312 406,348 460,348 460,312"/>
+<text text-anchor="middle" x="433" y="335">*</text>
+</g>
+<!-- nt:base&#45;&gt;d0e1779 -->
+<g id="edge78" class="edge"><title>nt:base&#45;&gt;d0e1779</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M70,552C78,503 102,404 166,357 204,330 346,329 406,329"/>
+<polygon style="fill:black;stroke:black;" points="73,552 69,562 67,552 73,552"/>
+</a>
+</g>
+<!-- d0e1869 -->
+<g id="node71" class="node"><title>d0e1869</title>
+<polygon style="fill:khaki;stroke:black;" points="460,1074 406,1074 406,1110 460,1110 460,1074"/>
+<text text-anchor="middle" x="433" y="1097">*</text>
+</g>
+<!-- nt:base&#45;&gt;d0e1869 -->
+<g id="edge84" class="edge"><title>nt:base&#45;&gt;d0e1869</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M69,608C75,702 98,1002 166,1065 234,1125 353,1109 406,1098"/>
+<polygon style="fill:black;stroke:black;" points="66,608 68,598 72,608 66,608"/>
+</a>
+</g>
+<!-- nt:query -->
+<g id="node81" class="node"><title>nt:query</title>
+<ellipse style="fill:gold;stroke:black;" cx="244" cy="580" rx="36" ry="18"/>
+<text text-anchor="middle" x="244" y="585">nt:query</text>
+</g>
+<!-- nt:base&#45;&gt;nt:query -->
+<g id="edge96" class="edge"><title>nt:base&#45;&gt;nt:query</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M111,580C141,580 179,580 207,580"/>
+<polygon style="fill:black;stroke:black;" points="111,583 101,580 111,576 111,583"/>
+</a>
+</g>
+<!-- d0e2200 -->
+<g id="node84" class="node"><title>d0e2200</title>
+<polygon style="fill:khaki;stroke:black;" points="460,712 406,712 406,748 460,748 460,712"/>
+<text text-anchor="middle" x="433" y="735">*</text>
+</g>
+<!-- nt:base&#45;&gt;d0e2200 -->
+<g id="edge102" class="edge"><title>nt:base&#45;&gt;d0e2200</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M107,591C125,596 147,602 166,607 236,624 265,603 322,645 347,662 335,683 358,703 372,714 391,721 406,725"/>
+<polygon style="fill:black;stroke:black;" points="106,594 97,588 108,588 106,594"/>
+</a>
+</g>
+<!-- nt:versionHistory&#45;&gt;d0e48 -->
+<g id="edge10" class="edge"><title>nt:versionHistory&#45;&gt;d0e48</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M300,200C307,203 315,207 322,211 342,224 339,237 358,249 373,258 391,265 406,269"/>
+<polygon style="fill:black;stroke:black;" points="298,203 290,196 301,196 298,203"/>
+</a>
+</g>
+<!-- d0e971 -->
+<g id="node32" class="node"><title>d0e971</title>
+<polygon style="fill:khaki;stroke:black;" points="460,42 406,42 406,78 460,78 460,42"/>
+<text text-anchor="middle" x="433" y="65">*</text>
+</g>
+<!-- nt:versionHistory&#45;&gt;d0e971 -->
+<g id="edge36" class="edge"><title>nt:versionHistory&#45;&gt;d0e971</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M304,169C310,166 317,162 322,157 349,135 332,111 358,87 372,75 391,69 406,65"/>
+<polygon style="fill:black;stroke:black;" points="305,173 294,173 302,166 305,173"/>
+</a>
+</g>
+<!-- d0e997 -->
+<g id="node36" class="node"><title>d0e997</title>
+<polygon style="fill:khaki;stroke:black;" points="490,204 376,204 376,240 490,240 490,204"/>
+<text text-anchor="middle" x="433" y="227">jcr:versionLabels</text>
+</g>
+<!-- nt:versionHistory&#45;&gt;d0e997 -->
+<g id="edge40" class="edge"><title>nt:versionHistory&#45;&gt;d0e997</title>
+<a xlink:title="is mandatory child node of">
+<path style="fill:none;stroke:black;" d="M305,196C328,201 353,206 376,211"/>
+<polygon style="fill:black;stroke:black;" points="304,199 295,194 305,193 304,199"/>
+</a>
+</g>
+<!-- d0e1026 -->
+<g id="node39" class="node"><title>d0e1026</title>
+<polygon style="fill:khaki;stroke:black;" points="483,96 383,96 383,132 483,132 483,96"/>
+<text text-anchor="middle" x="433" y="119">jcr:rootVersion</text>
+</g>
+<!-- nt:versionHistory&#45;&gt;d0e1026 -->
+<g id="edge44" class="edge"><title>nt:versionHistory&#45;&gt;d0e1026</title>
+<a xlink:title="is mandatory child node of">
+<path style="fill:none;stroke:black;" d="M295,168C304,164 313,161 322,157 339,151 342,148 358,141 366,138 374,135 382,132"/>
+<polygon style="fill:black;stroke:black;" points="297,171 286,171 294,165 297,171"/>
+</a>
+</g>
+<!-- mix:referenceable -->
+<g id="node11" class="node"><title>mix:referenceable</title>
+<ellipse style="fill:greenyellow;stroke:black;" cx="67" cy="130" rx="63" ry="18"/>
+<text text-anchor="middle" x="67" y="135">mix:referenceable</text>
+</g>
+<!-- mix:referenceable&#45;&gt;nt:versionHistory -->
+<g id="edge32" class="edge"><title>mix:referenceable&#45;&gt;nt:versionHistory</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M120,146C146,153 177,163 202,171"/>
+<polygon style="fill:black;stroke:black;" points="119,149 110,143 121,143 119,149"/>
+</a>
+</g>
+<!-- mix:versionable -->
+<g id="node18" class="node"><title>mix:versionable</title>
+<ellipse style="fill:greenyellow;stroke:black;" cx="244" cy="22" rx="57" ry="18"/>
+<text text-anchor="middle" x="244" y="27">mix:versionable</text>
+</g>
+<!-- mix:referenceable&#45;&gt;mix:versionable -->
+<g id="edge18" class="edge"><title>mix:referenceable&#45;&gt;mix:versionable</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M118,111C122,109 127,106 130,103 153,85 144,67 166,49 175,42 187,37 198,33"/>
+<polygon style="fill:black;stroke:black;" points="119,114 109,116 116,108 119,114"/>
+</a>
+</g>
+<!-- mix:referenceable&#45;&gt;nt:resource -->
+<g id="edge28" class="edge"><title>mix:referenceable&#45;&gt;nt:resource</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M120,114C148,106 183,95 208,87"/>
+<polygon style="fill:black;stroke:black;" points="121,117 110,117 119,111 121,117"/>
+</a>
+</g>
+<!-- mix:referenceable&#45;&gt;nt:version -->
+<g id="edge48" class="edge"><title>mix:referenceable&#45;&gt;nt:version</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M140,130C161,130 184,130 203,130"/>
+<polygon style="fill:black;stroke:black;" points="140,133 130,130 140,126 140,133"/>
+</a>
+</g>
+<!-- mix:referenceable&#45;&gt;nt:frozenNode -->
+<g id="edge72" class="edge"><title>mix:referenceable&#45;&gt;nt:frozenNode</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M91,154C110,172 139,196 166,211 177,217 190,222 202,227"/>
+<polygon style="fill:black;stroke:black;" points="89,157 84,147 94,152 89,157"/>
+</a>
+</g>
+<!-- nt:versionLabels&#45;&gt;d0e997 -->
+<g id="edge42" class="edge"><title>nt:versionLabels&#45;&gt;d0e997</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M293,276C303,272 313,269 322,265 339,258 342,255 358,249 366,246 374,243 382,240"/>
+<polygon style="fill:black;stroke:black;" points="295,279 284,279 292,273 295,279"/>
+</a>
+</g>
+<!-- d0e2052 -->
+<g id="node75" class="node"><title>d0e2052</title>
+<polygon style="fill:khaki;stroke:black;" points="508,966 358,966 358,1002 508,1002 508,966"/>
+<text text-anchor="middle" x="433" y="989">jcr:childNodeDefinition</text>
+</g>
+<!-- nt:childNodeDefinition&#45;&gt;d0e2052 -->
+<g id="edge90" class="edge"><title>nt:childNodeDefinition&#45;&gt;d0e2052</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M332,984C341,984 349,984 358,984"/>
+<polygon style="fill:black;stroke:black;" points="332,987 322,984 332,980 332,987"/>
+</a>
+</g>
+<!-- nt:file -->
+<g id="node22" class="node"><title>nt:file</title>
+<ellipse style="fill:gold;stroke:black;" cx="433" cy="476" rx="30" ry="18"/>
+<text text-anchor="middle" x="433" y="481">nt:file</text>
+</g>
+<!-- nt:hierarchyNode&#45;&gt;nt:file -->
+<g id="edge22" class="edge"><title>nt:hierarchyNode&#45;&gt;nt:file</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M300,511C335,502 378,490 405,483"/>
+<polygon style="fill:black;stroke:black;" points="301,514 290,514 299,508 301,514"/>
+</a>
+</g>
+<!-- nt:linkedFile -->
+<g id="node48" class="node"><title>nt:linkedFile</title>
+<ellipse style="fill:gold;stroke:black;" cx="433" cy="568" rx="48" ry="18"/>
+<text text-anchor="middle" x="433" y="573">nt:linkedFile</text>
+</g>
+<!-- nt:hierarchyNode&#45;&gt;nt:linkedFile -->
+<g id="edge56" class="edge"><title>nt:hierarchyNode&#45;&gt;nt:linkedFile</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M304,539C332,546 366,553 391,559"/>
+<polygon style="fill:black;stroke:black;" points="303,542 294,537 304,536 303,542"/>
+</a>
+</g>
+<!-- nt:folder -->
+<g id="node94" class="node"><title>nt:folder</title>
+<ellipse style="fill:gold;stroke:black;" cx="433" cy="676" rx="37" ry="18"/>
+<text text-anchor="middle" x="433" y="681">nt:folder</text>
+</g>
+<!-- nt:hierarchyNode&#45;&gt;nt:folder -->
+<g id="edge112" class="edge"><title>nt:hierarchyNode&#45;&gt;nt:folder</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M304,540C311,544 317,548 322,553 355,584 326,616 358,649 369,659 384,666 398,670"/>
+<polygon style="fill:black;stroke:black;" points="303,543 295,536 306,537 303,543"/>
+</a>
+</g>
+<!-- d0e2372 -->
+<g id="node96" class="node"><title>d0e2372</title>
+<polygon style="fill:khaki;stroke:black;" points="610,581 556,581 556,617 610,617 610,581"/>
+<text text-anchor="middle" x="583" y="604">*</text>
+</g>
+<!-- nt:hierarchyNode&#45;&gt;d0e2372 -->
+<g id="edge116" class="edge"><title>nt:hierarchyNode&#45;&gt;d0e2372</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M312,518C367,515 445,517 508,541 531,549 552,567 566,581"/>
+<polygon style="fill:black;stroke:black;" points="312,521 302,519 312,515 312,521"/>
+</a>
+</g>
+<!-- nt:file&#45;&gt;d0e693 -->
+<g id="edge24" class="edge"><title>nt:file&#45;&gt;d0e693</title>
+<a xlink:title="is mandatory child node of">
+<path style="fill:none;stroke:black;" d="M472,470C495,467 522,462 544,459"/>
+<polygon style="fill:black;stroke:black;" points="472,473 462,472 471,467 472,473"/>
+</a>
+</g>
+<!-- nt:version&#45;&gt;d0e971 -->
+<g id="edge38" class="edge"><title>nt:version&#45;&gt;d0e971</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M287,116C299,112 311,108 322,103 339,97 342,94 358,87 374,81 391,74 406,69"/>
+<polygon style="fill:black;stroke:black;" points="288,119 277,119 286,113 288,119"/>
+</a>
+</g>
+<!-- nt:version&#45;&gt;d0e1026 -->
+<g id="edge46" class="edge"><title>nt:version&#45;&gt;d0e1026</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M295,126C322,123 356,121 382,118"/>
+<polygon style="fill:black;stroke:black;" points="295,129 285,127 295,123 295,129"/>
+</a>
+</g>
+<!-- d0e1162 -->
+<g id="node44" class="node"><title>d0e1162</title>
+<polygon style="fill:khaki;stroke:black;" points="484,150 382,150 382,186 484,186 484,150"/>
+<text text-anchor="middle" x="433" y="173">jcr:frozenNode</text>
+</g>
+<!-- nt:version&#45;&gt;d0e1162 -->
+<g id="edge52" class="edge"><title>nt:version&#45;&gt;d0e1162</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M291,140C319,146 353,153 382,158"/>
+<polygon style="fill:black;stroke:black;" points="290,143 281,138 291,137 290,143"/>
+</a>
+</g>
+<!-- nt:frozenNode&#45;&gt;d0e1162 -->
+<g id="edge54" class="edge"><title>nt:frozenNode&#45;&gt;d0e1162</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M292,222C302,218 312,215 322,211 339,205 342,202 358,195 366,192 374,189 382,186"/>
+<polygon style="fill:black;stroke:black;" points="294,225 283,226 291,219 294,225"/>
+</a>
+</g>
+<!-- nt:frozenNode&#45;&gt;d0e1779 -->
+<g id="edge76" class="edge"><title>nt:frozenNode&#45;&gt;d0e1779</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M297,252C306,256 315,260 322,265 342,277 339,290 358,303 373,312 391,319 406,323"/>
+<polygon style="fill:black;stroke:black;" points="296,255 287,249 298,249 296,255"/>
+</a>
+</g>
+<!-- rep:root -->
+<g id="node50" class="node"><title>rep:root</title>
+<ellipse style="fill:gold;stroke:black;" cx="433" cy="1038" rx="35" ry="18"/>
+<text text-anchor="middle" x="433" y="1043">rep:root</text>
+</g>
+<!-- d0e1253 -->
+<g id="node53" class="node"><title>d0e1253</title>
+<polygon style="fill:khaki;stroke:black;" points="620,889 546,889 546,925 620,925 620,889"/>
+<text text-anchor="middle" x="583" y="912">jcr:system</text>
+</g>
+<!-- rep:root&#45;&gt;d0e1253 -->
+<g id="edge60" class="edge"><title>rep:root&#45;&gt;d0e1253</title>
+<a xlink:title="is mandatory child node of">
+<path style="fill:none;stroke:black;" d="M476,1028C487,1024 499,1018 508,1011 539,987 562,948 574,925"/>
+<polygon style="fill:black;stroke:black;" points="477,1031 466,1031 475,1025 477,1031"/>
+</a>
+</g>
+<!-- nt:unstructured&#45;&gt;rep:root -->
+<g id="edge58" class="edge"><title>nt:unstructured&#45;&gt;rep:root</title>
+<a xlink:title="supertype">
+<path style="fill:none;stroke:black;" d="M309,1038C339,1038 373,1038 397,1038"/>
+<polygon style="fill:black;stroke:black;" points="309,1041 299,1038 309,1034 309,1041"/>
+</a>
+</g>
+<!-- nt:unstructured&#45;&gt;d0e1869 -->
+<g id="edge82" class="edge"><title>nt:unstructured&#45;&gt;d0e1869</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M295,1053C331,1063 377,1076 406,1084"/>
+<polygon style="fill:black;stroke:black;" points="294,1056 285,1050 296,1050 294,1056"/>
+</a>
+</g>
+<!-- rep:system&#45;&gt;d0e1253 -->
+<g id="edge62" class="edge"><title>rep:system&#45;&gt;d0e1253</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M292,741C367,759 503,791 508,795 543,819 565,864 576,889"/>
+<polygon style="fill:black;stroke:black;" points="291,744 282,739 292,738 291,744"/>
+</a>
+</g>
+<!-- rep:system&#45;&gt;d0e2200 -->
+<g id="edge100" class="edge"><title>rep:system&#45;&gt;d0e2200</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M298,730C334,730 378,730 406,730"/>
+<polygon style="fill:black;stroke:black;" points="298,733 288,730 298,726 298,733"/>
+</a>
+</g>
+<!-- d0e2226 -->
+<g id="node87" class="node"><title>d0e2226</title>
+<polygon style="fill:khaki;stroke:black;" points="481,804 385,804 385,840 481,840 481,804"/>
+<text text-anchor="middle" x="433" y="827">jcr:nodeTypes</text>
+</g>
+<!-- rep:system&#45;&gt;d0e2226 -->
+<g id="edge104" class="edge"><title>rep:system&#45;&gt;d0e2226</title>
+<a xlink:title="is mandatory child node of">
+<path style="fill:none;stroke:black;" d="M280,750C302,761 332,777 358,790 368,795 379,799 390,804"/>
+<polygon style="fill:black;stroke:black;" points="278,753 271,745 281,747 278,753"/>
+</a>
+</g>
+<!-- rep:system&#45;&gt;d0e2255 -->
+<g id="edge108" class="edge"><title>rep:system&#45;&gt;d0e2255</title>
+<a xlink:title="is mandatory child node of">
+<path style="fill:none;stroke:black;" d="M291,716C302,712 313,706 322,699 344,682 337,665 358,649 363,645 368,642 373,639"/>
+<polygon style="fill:black;stroke:black;" points="292,720 281,720 289,713 292,720"/>
+</a>
+</g>
+<!-- d0e1299 -->
+<g id="node59" class="node"><title>d0e1299</title>
+<polygon style="fill:khaki;stroke:black;" points="460,858 406,858 406,894 460,894 460,858"/>
+<text text-anchor="middle" x="433" y="881">*</text>
+</g>
+<!-- rep:nodeTypes&#45;&gt;d0e1299 -->
+<g id="edge66" class="edge"><title>rep:nodeTypes&#45;&gt;d0e1299</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M295,837C331,847 377,860 406,868"/>
+<polygon style="fill:black;stroke:black;" points="294,840 285,834 296,834 294,840"/>
+</a>
+</g>
+<!-- rep:nodeTypes&#45;&gt;d0e2226 -->
+<g id="edge106" class="edge"><title>rep:nodeTypes&#45;&gt;d0e2226</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M309,822C334,822 361,822 384,822"/>
+<polygon style="fill:black;stroke:black;" points="309,825 299,822 309,818 309,825"/>
+</a>
+</g>
+<!-- nt:nodeType&#45;&gt;d0e1299 -->
+<g id="edge68" class="edge"><title>nt:nodeType&#45;&gt;d0e1299</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M292,916C328,905 376,892 406,884"/>
+<polygon style="fill:black;stroke:black;" points="293,919 282,919 291,913 293,919"/>
+</a>
+</g>
+<!-- nt:nodeType&#45;&gt;d0e2052 -->
+<g id="edge88" class="edge"><title>nt:nodeType&#45;&gt;d0e2052</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M292,944C315,950 344,959 369,966"/>
+<polygon style="fill:black;stroke:black;" points="291,947 282,941 293,941 291,947"/>
+</a>
+</g>
+<!-- d0e2081 -->
+<g id="node78" class="node"><title>d0e2081</title>
+<polygon style="fill:khaki;stroke:black;" points="502,912 364,912 364,948 502,948 502,912"/>
+<text text-anchor="middle" x="433" y="935">jcr:propertyDefinition</text>
+</g>
+<!-- nt:nodeType&#45;&gt;d0e2081 -->
+<g id="edge92" class="edge"><title>nt:nodeType&#45;&gt;d0e2081</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M302,930C322,930 343,930 363,930"/>
+<polygon style="fill:black;stroke:black;" points="302,933 292,930 302,926 302,933"/>
+</a>
+</g>
+<!-- nt:propertyDefinition&#45;&gt;d0e2081 -->
+<g id="edge94" class="edge"><title>nt:propertyDefinition&#45;&gt;d0e2081</title>
+<a xlink:title="has primary type">
+<path style="fill:none;stroke:black;" d="M302,893C323,899 347,906 369,912"/>
+<polygon style="fill:black;stroke:black;" points="301,896 292,890 303,890 301,896"/>
+</a>
+</g>
+<!-- mix:lockable -->
+<g id="node93" class="node"><title>mix:lockable</title>
+<ellipse style="fill:greenyellow;stroke:black;" cx="67" cy="76" rx="49" ry="18"/>
+<text text-anchor="middle" x="67" y="81">mix:lockable</text>
+</g>
+<!-- nt:folder&#45;&gt;d0e2372 -->
+<g id="edge114" class="edge"><title>nt:folder&#45;&gt;d0e2372</title>
+<a xlink:title="is child node of">
+<path style="fill:none;stroke:black;stroke-dasharray:1,5;" d="M474,663C485,659 497,654 508,649 526,640 544,627 559,617"/>
+<polygon style="fill:black;stroke:black;" points="475,666 464,666 473,660 475,666"/>
+</a>
+</g>
+</g>
+</svg>

Modified: jackrabbit/site/trunk/src/site/markdown/node-types.md
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/node-types.md?rev=1671485&r1=1671484&r2=1671485&view=diff
==============================================================================
--- jackrabbit/site/trunk/src/site/markdown/node-types.md (original)
+++ jackrabbit/site/trunk/src/site/markdown/node-types.md Mon Apr  6 05:53:57 2015
@@ -1,38 +1,60 @@
-Title: Node Types
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+Node Types
+==========
 Each node in a Jackrabbit workspace tree has a node type that defines the
 child nodes and properties it may (or must) have. Developers can use node
 types to define a custom content model for their application domain and
 have Jackrabbit enforce the constraints of that model at the repository
 level.
 
-<a name="NodeTypes-PrimaryvsMixin"></a>
-## Primary vs Mixin
+also see:
+* [Node Type Notation](node-type-notation.html) 
+* [Node Type Visualization](node-type-visualization.html)
+
 
+Primary vs Mixin
+----------------
 There are two categories of node types, *primary* and *mixin*. Every node
-has a primary node type assigned to it upon creation (see *Node.addNode*
+has a primary node type assigned to it upon creation (see `Node.addNode`
 in the JCR API). In addition, a mixin node type may be added to a node
 later in its lifecycle (see *Node.addMixin*).
 
 The primary node type of a node usually defines node structure (i.e.,
 allowed and required child nodes and properties) related to the problem
 domain being modeled. For example, a node used in storing content about
-business contacts might have the primary type *myapp:Contact* which
-defines properties such as *myapp:givenName*, *myapp:familyName* and so
+business contacts might have the primary type `myapp:Contact` which
+defines properties such as `myapp:givenName`, `myapp:familyName` and so
 forth.
 
 Mixin node types usually specify additional properties or child nodes
 related to a capability being added to the node. These capabilities may
 include generic repository-level functions as in the case of the built-in
-mixins *mix:versionable* and *mix:lockable*, for example, or
-domain-level capabilities such as a (hypothetical) *myapp:Emailable*
-mixin type that adds the property *myapp:emailAddress* to a node.
+mixins `mix:versionable` and `mix:lockable`, for example, or
+domain-level capabilities such as a (hypothetical) `myapp:Emailable`
+mixin type that adds the property `myapp:emailAddress` to a node.
 
-<a name="NodeTypes-Inheritance"></a>
-## Inheritance
 
+Inheritance
+-----------
 Primary node types are arranged in an inheritance hierarchy. Every primary
 node type must be the subtype of at least one existing node type. The
-built-in node type *nt:base* serves as the root of this hierarchy.
+built-in node type `nt:base` serves as the root of this hierarchy.
 Jackrabbit supports multiple inheritance of node types so node types can
 have more than one supertype.
 
@@ -46,122 +68,137 @@ 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.
 
-<a name="NodeTypes-NodeTypeDefinition"></a>
-## Node Type Definition
 
+Node Type Definition
+--------------------
 A node type definition has the following attributes:
 
-* *Name* Every node type registered with the repository has a unique name.
-The naming conventions for node 		    types are the same as
-for items (i.e., they may have a colon delimited prefix).
-* *Supertypes* A primary node type (with the exception of *nt:base*) must
-extend another node type (and may extend more than one node type). A mixin
-node type may extend another node type.
-* *Mixin Status* A node type may be either primary or mixin.
-* *Orderable Child Nodes Status* A primary node type may specify that child
-nodes are client-orderable. If this status is set to true, then
-*Node.orderBefore* can be used to set the order of child nodes. Only
-primary node types control a node's status in this regard. This setting on
-a mixin node type will not have 		    any effect on the node.
-* *Property Definitions* A node type contains a set of definitions
-specifying the properties that nodes of this node type are allowed (or
-required) to have and the characteristics of those properties (see below).
-* *Child Node Definitions* A node type contains a set of definitions
-specifying the child nodes that nodes of this node type are allowed (or
-required) to have and the characteristics of those child nodes (including,
-in turn, their node types, see below).
-* *Primary Item Name* A node type may specify one child item (property or
-node) by name as the primary item. This indicator is used by the method
-*Node.getPrimaryItem()*.
+* **Name**   
+    Every node type registered with the repository has a unique name.
+    The naming conventions for node types are the same as
+    for items (i.e., they may have a colon delimited prefix).
+* **Supertypes**  
+    A primary node type (with the exception of *nt:base*) must
+    extend another node type (and may extend more than one node type). A mixin
+    node type may extend another node type.
+* **Mixin Status**  
+    A node type may be either primary or mixin.
+* **Orderable Child Nodes Status**   
+    A primary node type may specify that child
+    nodes are client-orderable. If this status is set to true, then
+    `Node.orderBefore` can be used to set the order of child nodes. Only
+    primary node types control a node's status in this regard. This setting on
+    a mixin node type will not have any effect on the node.
+* **Property Definitions**  
+    A node type contains a set of definitions
+    specifying the properties that nodes of this node type are allowed (or
+    required) to have and the characteristics of those properties (see below).
+* **Child Node Definitions**  
+    A node type contains a set of definitions
+    specifying the child nodes that nodes of this node type are allowed (or
+    required) to have and the characteristics of those child nodes (including,
+    in turn, their node types, see below).
+* **Primary Item Name**  
+    A node type may specify one child item (property or
+    node) by name as the primary item. This indicator is used by the method
+    `Node.getPrimaryItem()`.
 
-<a name="NodeTypes-PropertyDefinition"></a>
-## Property Definition
 
+Property Definition
+-------------------
 A property definition (within a node type definition) contains the the
 following information:
 
-* *Name* The name of the property to which this definition applies, or
-"***" if this definition is			      a "residual
-definition', meaning that it applies to any additional properties with any
-names apart from those otherwise defined in this node type.
-* *Required Type* The required type of the property. One of
-** *STRING*
-** *BINARY*
-** *LONG*
-** *DOUBLE*
-** *BOOLEAN*
-** *DATE*
-** *PATH*
-** *NAME*
-** *REFERENCE*
-** *UNDEFINED* (the property can be of any type)
-* *Value Constraints* The value constraints on the property define the
-range of values that may be assigned			     to this
-property.
-* *Default Value* The value that the property will have if it is
-auto-created.
-* *Auto-create Status* Whether this property will be auto-created when its
-parent node is created. Only properties with a default value can be
-auto-created.
-* *Mandatory Status* A mandatory property is one that must exist. If a node
-of a type that specifies a			   mandatory property is
-created then any attempt to save that node without adding the mandatory
-property will fail. Since single-value properties either have a value or do
-not exist (there being no concept of the null value) this implies that a
-mandatory single-value property must have a value. A mandatory multi-value
-property on the other hand may have zero or more values.
-* *On-Parent-Version Status* The *onParentVersion* status of specifies
-what happens to this property if a			   new version of
-its parent node is created (i.e. a checked-in is done on it).
-* *Protected Status* A protected property is one which cannot be modified
-(i.e. have child nodes or properties added or removed) or removed from its
-parent through the JCR API.
-* *Multiple Values Status* Whether this property can have multiple values,
-meaning that it stores an array of values, not just one. Note that this
-"multiple values" flag is special in that a given node type may have two
-property definitions that are identical in every respect except for the
-their "multiple values" status. For example, a node type can specify two
-string properties both called X, one of which is multi-valued and the other
-that is not. An example of such a node type is *nt:unstructured*.
+* **Name**   
+    The name of the property to which this definition applies, or `*` if this definition is a "residual
+    definition', meaning that it applies to any additional properties with any
+    names apart from those otherwise defined in this node type.
+* **Required Type**   
+    The required type of the property. One of
+    * `STRING`
+    * `BINARY`
+    * `LONG`
+    * `DOUBLE`
+    * `BOOLEAN`
+    * `DATE`
+    * `PATH`
+    * `NAME`
+    * `REFERENCE`
+    * `UNDEFINED` (the property can be of any type)
+* **Value Constraints**  
+    The value constraints on the property define the
+    range of values that may be assigned to this property.
+* **Default Value**  
+    The value that the property will have if it is auto-created.
+* **Auto-create Status**  
+    Whether this property will be auto-created when its
+    parent node is created. Only properties with a default value can be
+    auto-created.
+* **Mandatory Status**  
+    A mandatory property is one that must exist. If a node
+    of a type that specifies a mandatory property is
+    created then any attempt to save that node without adding the mandatory
+    property will fail. Since single-value properties either have a value or do
+    not exist (there being no concept of the null value) this implies that a
+    mandatory single-value property must have a value. A mandatory multi-value
+    property on the other hand may have zero or more values.
+* **On-Parent-Version Status**  
+    The `onParentVersion` status of specifies what happens to this property if a
+    new version of its parent node is created (i.e. a checked-in is done on it).
+* **Protected Status**  
+    A protected property is one which cannot be modified
+    (i.e. have child nodes or properties added or removed) or removed from its
+    parent through the JCR API.
+* **Multiple Values Status**  
+    Whether this property can have multiple values,
+    meaning that it stores an array of values, not just one. Note that this
+    "multiple values" flag is special in that a given node type may have two
+    property definitions that are identical in every respect except for the
+    their "multiple values" status. For example, a node type can specify two
+    string properties both called X, one of which is multi-valued and the other
+    that is not. An example of such a node type is `nt:unstructured`.
 
-<a name="NodeTypes-ChildNodeDefinition"></a>
-## Child Node Definition
 
+Child Node Definition
+---------------------
 A child node definition (within a node type definition) contains the the
 following information:
 
-* *Name* The name of the child node to which this definition applies or
-"***" if this definition is			      a "residual
-definition', meaning that it applies to any additional child nodes with any
-			names apart from those otherwise defined in this
-node type.
-* *Required Primary Types* If it specifies only a single node type N then
-the primary node type of this child node must be N or a subtype of N. If
-this attribute specifies multiple node types N1, N2,..., Nm then the
-primary node type of this child node must be a subtype of all the types N1,
-N2, ... Nm. Note that this			   is possible because
-Jackrabbit supports multiple inheritance among node types and that each
-node still has one and only one primary node type.
-* *Default Primary Type* This is the primary node type automatically
-assigned if no node type information is specified when the node is created.
-* *Auto-create Status* Governs whether this child node will be auto-created
-when its parent node is created.
-* *Mandatory Status* Governs whether the child node is mandatory. A
-mandatory child node is one that must exist. If a mandatory child node is
-missing from a parent node then save on the parent node will fail.
-* *On-Parent-Version Status* This specifies what to do with the child node
-if its parent node is versioned.
-* *Protected Status* This governs whether the child node is protected. A
-protected node is one which cannot be modified (have child node or
-properties added to it or removed from it) or be removed from its	   
-	      parent through the JCR API.
-* *Same-Name Siblings Status* This governs whether this child node can have
-same-name siblings, meaning that the parent node can have more than one
-child node of this name.
+* **Name**  
+    The name of the child node to which this definition applies or `*` if this 
+    definition is a "residual definition', meaning that it applies to any 
+    additional child nodes with any names apart from those otherwise defined in this node type.
+* **Required Primary Types**  
+    If it specifies only a single node type N then
+    the primary node type of this child node must be N or a subtype of N. If
+    this attribute specifies multiple node types N1, N2,..., Nm then the
+    primary node type of this child node must be a subtype of all the types N1,
+    N2, ... Nm. Note that this			   is possible because
+    Jackrabbit supports multiple inheritance among node types and that each
+    node still has one and only one primary node type.
+* **Default Primary Type**  
+    This is the primary node type automatically
+    assigned if no node type information is specified when the node is created.
+* **Auto-create Status**  
+    Governs whether this child node will be auto-created when its parent node is created.
+* **Mandatory Status**  
+    Governs whether the child node is mandatory. A
+    mandatory child node is one that must exist. If a mandatory child node is
+    missing from a parent node then save on the parent node will fail.
+* **On-Parent-Version Status**  
+    This specifies what to do with the child node if its parent node is versioned.
+* **Protected Status**  
+    This governs whether the child node is protected. A
+    protected node is one which cannot be modified (have child node or
+    properties added to it or removed from it) or be removed from its parent through the JCR API.
+* **Same-Name Siblings Status**  
+    This governs whether this child node can have
+    same-name siblings, meaning that the parent node can have more than one
+    child node of this name.
 
-<a name="NodeTypes-RegisteringNodeTypes"></a>
-## Registering Node Types
 
+Registering Node Types
+----------------------
 Each Jackrabbit instance has a *NodeTypeRegistry* 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
@@ -169,31 +206,25 @@ Jackrabbit implementation).
 
 First you define your node types in a text file using the "Compact
 Namespace and Node Type Definition" (CND) notation, then register them
-using the  [*JackrabbitNodeTypeManager*](http://jackrabbit.apache.org/api/1.5/org/apache/jackrabbit/api/JackrabbitNodeTypeManager.html)
-. The following code gives an example:
-
+using the  [*JackrabbitNodeTypeManager*](http://jackrabbit.apache.org/api/1.5/org/apache/jackrabbit/api/JackrabbitNodeTypeManager.html).
+The following code gives an example:
 
     import javax.jcr.Session;
     import org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
     import java.io.FileInputStream;
     
     public class CustomNodeTypeExample {
-        public static void RegisterCustomNodeTypes(Session session, String
-cndFileName)
-    	throws Exception {
+        public static void RegisterCustomNodeTypes(Session session, String cndFileName)
+    		throws Exception {
     
     	// Get the JackrabbitNodeTypeManager from the Workspace.
-    	// Note that it must be cast from the generic JCR NodeTypeManager
-to the
+    	// Note that it must be cast from the generic JCR NodeTypeManager to the
     	// Jackrabbit-specific implementation.
-    	JackrabbitNodeTypeManager manager = (JackrabbitNodeTypeManager)
-    	       session.getWorkspace().getNodeTypeManager();
+    	JackrabbitNodeTypeManager manager = (JackrabbitNodeTypeManager) session.getWorkspace().getNodeTypeManager();
     	// Register the custom node types defined in the CND file
-    	manager.registerNodeTypes(new FileInputStream(cndFileName),
-    	       JackrabbitNodeTypeManager.TEXT_X_JCR_CND);
+    	manager.registerNodeTypes(new FileInputStream(cndFileName), JackrabbitNodeTypeManager.TEXT_X_JCR_CND);
         }
     }
 
 
-Continue to [Node Type Notation](node-type-notation.html)
- or [Node Type Visualization]
+Continue to [Node Type Notation](node-type-notation.html) or [Node Type Visualization](node-type-visualization.html)

Modified: jackrabbit/site/trunk/src/site/markdown/object-content-mapping.md
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/object-content-mapping.md?rev=1671485&r1=1671484&r2=1671485&view=diff
==============================================================================
--- jackrabbit/site/trunk/src/site/markdown/object-content-mapping.md (original)
+++ jackrabbit/site/trunk/src/site/markdown/object-content-mapping.md Mon Apr  6 05:53:57 2015
@@ -1,29 +1,42 @@
-Title: Object Content Mapping
-{warning:title=Warning}
-The Jackrabbit OCM documentation is still in progress. We advise you also
-to review  [the unit tests](http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/)
-to get an overview on current OCM features.
-{warning}
-
-* [Object Content Manager](object-content-manager.html)
-** [Basic OCM operations](basic-ocm-operations.html)
-** [OCM Search](ocm-search.html)
-** [OCM Version Management](ocm-version-management.html)
-** [OCM Locking](ocm-locking.html)
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+Object Content Mapping
+======================
+
+> The Jackrabbit OCM documentation is still in progress. We advise you also
+> to review  [the unit tests](http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/)
+> to get an overview on current OCM features.
+
+
+* [Object Content Manager](ocm/object-content-manager.html)
+    * [Basic OCM operations](ocm/basic-ocm-operations.html)
+    * [OCM Search](ocm/ocm-search.html)
+    * [OCM Version Management](ocm/ocm-version-management.html)
+    * [OCM Locking](ocm/ocm-locking.html)
 * Tutorials
-** [5' with Jackrabbit OCM](5-with-jackrabbit-ocm.html)
-** [A simple OCM project with Maven & Eclipse](a-simple-ocm-project-with-maven--eclipse.html)
-** [How to map associations between objects](how-to-map-associations-between-objects.html)
-* [Mapping Stategies](mapping-stategies.html)
- (obsolete doc)
-** [Mapping Atomic Fields](mapping-atomic-fields.html)
- (obsolete doc)
-** [Mapping Bean Fields](mapping-bean-fields.html)
- (obsolete doc)
-** [Mapping Collection Fields](mapping-collection-fields.html)
- (obsolete doc)
-** [Advanced Mapping Strategies](advanced-mapping-strategies.html)
- (obsolete doc)
+    * [5' with Jackrabbit OCM](ocm/5-with-jackrabbit-ocm.html)
+    * [A simple OCM project with Maven & Eclipse](ocm/a-simple-ocm-project-with-maven--eclipse.html)
+    * [How to map associations between objects](ocm/how-to-map-associations-between-objects.html)
+* [Mapping Strategies](ocm/mapping-stategies.html) (obsolete doc)
+    * [Mapping Atomic Fields](ocm/mapping-atomic-fields.html) (obsolete doc)
+    * [Mapping Bean Fields](ocm/mapping-bean-fields.html) (obsolete doc)
+    * [Mapping Collection Fields](ocm/mapping-collection-fields.html) (obsolete doc)
+    * [Advanced Mapping Strategies](ocm/advanced-mapping-strategies.html) (obsolete doc)
 
 Jackrabbit OCM is a framework used to persist java objects (pojos) in a JCR
 repository including association, inheritance, polymorphism, composition,
@@ -37,25 +50,24 @@ 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.
 
-<a name="ObjectContentMapping-Whyanocm?"></a>
-## Why an ocm?
 
+Why an ocm?
+-----------
 The object content mapping framework was created for the following
 different reasons:
 
 * Sometimes it is very convenient to be able to just access the JCR nodes
-and properties directly from your presentation-layer for very simple things
-(mostly generic display). When a lot of "business logic" are involved, the
-JCR API can be too low level and real business objects (pojo) are more
-appreciate in such cases.
+    and properties directly from your presentation-layer for very simple things
+    (mostly generic display). When a lot of "business logic" are involved, the
+    JCR API can be too low level and real business objects (pojo) are more
+    appreciate in such cases.
 * The OCM framework provides more abstraction on the technologies used to
-persist your content. The different application layers are less dependent
-on the JCR API.
-* ORM tools like OJB or Hibernate are not appropriate for content oriented
-application.
+    persist your content. The different application layers are less dependent
+    on the JCR API.
+* ORM tools like OJB or Hibernate are not appropriate for content oriented application.
 
-<a name="ObjectContentMapping-Prerequisite"></a>
-## Prerequisite
 
+Prerequisite
+------------
 Before using this OCM framework, you should review the JCR specification
 and implementations like Apache Jackrabbit.

Copied: jackrabbit/site/trunk/src/site/markdown/ocm/5-with-jackrabbit-ocm.md (from r1670829, jackrabbit/site/trunk/attic/content/5'-with-jackrabbit-ocm.cwiki)
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/src/site/markdown/ocm/5-with-jackrabbit-ocm.md?p2=jackrabbit/site/trunk/src/site/markdown/ocm/5-with-jackrabbit-ocm.md&p1=jackrabbit/site/trunk/attic/content/5%27-with-jackrabbit-ocm.cwiki&r1=1670829&r2=1671485&rev=1671485&view=diff
==============================================================================
--- jackrabbit/site/trunk/attic/content/5'-with-jackrabbit-ocm.cwiki (original)
+++ jackrabbit/site/trunk/src/site/markdown/ocm/5-with-jackrabbit-ocm.md Mon Apr  6 05:53:57 2015
@@ -1,103 +1,123 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+5' with Jackrabbit and OCM
+==========================
 This very small tutorial describes how to create an application with Jackrabbit OCM.
-In short, you have to :
-* Create one or more persistent classes. 
-* Instantiate an [Object Content Manager] component.
-* Use the [Object Content Manager] to persist your data.
+In short, you have to:
 
+* Create one or more persistent classes. 
+* Instantiate an _Object Content Manager_ component.
+* Use the _Object Content Manager_ to persist your data.
 
-h2. Create a persistent class
 
-This tutorial is using the annotation support to define a persistent class. Your data objects are simple pojos with some OCM annotations. 
+Create a persistent class
+-------------------------
+This tutorial is using the annotation support to define a persistent class. 
+Your data objects are simple pojos with some OCM annotations. 
 Here is a example of a PressRelease class. 
 
-{code}
-package org.apache.jackrabbit.ocm.model;
-
-import java.util.Date;
-
-import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
-import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
-
-@Node
-public class PressRelease 
-{
+    package org.apache.jackrabbit.ocm.model;
+    
+    import java.util.Date;
+    
+    import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
+    import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
+    
+    @Node
+    public class PressRelease 
+    {
 	@Field(path=true) String path;
 	@Field String title; 
 	@Field Date pubDate; 
 	@Field String content;
 	
 	public String getPath() {
-		return path;
+	    return path;
 	}
 	public void setPath(String path) {
-		this.path = path;
+	    this.path = path;
 	}
 	public String getContent() {
-		return content;
+	    return content;
 	}
 	public void setContent(String content) {
-		this.content = content;
+	    this.content = content;
 	}
 	public Date getPubDate() {
-		return pubDate;
+	    return pubDate;
 	}
 	public void setPubDate(Date pubDate) {
-		this.pubDate = pubDate;
+	    this.pubDate = pubDate;
 	}
 	public String getTitle() {
-		return title;
+	    return title;
 	}
 	public void setTitle(String title) {
-		this.title = title;
+	    this.title = title;
 	}
-	
-	
-}
-{code}
-
-The annotation {code}@Node{code} has to be added on the top of the class.
-Each persistent class must have a *path field* which will be mapped into the JCR Node path. This can be specify with the annotation. {code}@Field(path=true){code}
-Other persistent fields can be defined with the annotation {code}@Field{code}
-
-That's all for the class definition. In other tutorials, we will see how to map advanced fields like collections or custom objects. 
-
+    }
 
 
+The annotation `@Node` has to be added on the top of the class.
+Each persistent class must have a *path field* which will be mapped 
+into the JCR Node path. This can be specify with the annotation. 
+`@Field(path=true)` Other persistent fields can be defined with the 
+annotation `@Field`
+
+That's all for the class definition. In other tutorials, we will see 
+how to map advanced fields like collections or custom objects. 
+
+
+Instantiate an Object Content Manager component
+-----------------------------------------------
+In order to save a PressRelease object, you have to instantiate an _Object Content Manager_ component : 
+
+
+    List<Class> classes = new ArrayList<Class>();	
+    classes.add(PressRelease.class); // Call this method for each persistent class
+		    
+    Mapper mapper = new AnnotationMapperImpl(classes);
+    ObjectContentManager ocm =  new ObjectContentManagerImpl(session, mapper);	
+
+
+Use the Object Content Manager to persist your data
+---------------------------------------------------
+Now, you are ready to create a new PressRelease and use the _Object Content Manager_ to persist it into the JCR repository. 
+
+
+    // Insert an object
+    System.out.println("Insert a press release in the repository");
+    PressRelease pressRelease = new PressRelease();
+    pressRelease.setPath("/newtutorial");
+    pressRelease.setTitle("This is the first tutorial on OCM");
+    pressRelease.setPubDate(new Date());
+    pressRelease.setContent("Many Jackrabbit users ask to the dev team to make a tutorial on OCM");
+			    
+    ocm.insert(pressRelease);
+    ocm.save();
+			    
+    // Retrieve 
+    System.out.println("Retrieve a press release from the repository");
+    pressRelease = (PressRelease) ocm.getObject("/newtutorial");
+    System.out.println("PressRelease title : " + pressRelease.getTitle());
+			    
+    // Delete
+    System.out.println("Remove a press release from the repository");
+    ocm.remove(pressRelease);
+    ocm.save();
 
-h2. Instantiate an Object Content Manager component
-In order to save a PressRelease object, you have to instantiate an [Object Content Manager] component : 
-
-{code}
-List<Class> classes = new ArrayList<Class>();	
-classes.add(PressRelease.class); // Call this method for each persistent class
-		
-Mapper mapper = new AnnotationMapperImpl(classes);
-ObjectContentManager ocm =  new ObjectContentManagerImpl(session, mapper);	
-{code}
-
-h2. Use the Object Content Manager to persist your data
-
-Now, you are ready to create a new PressRelease and use the [Object Content Manager] to persist it into the JCR repository. 
-
-{code}
-// Insert an object
-System.out.println("Insert a press release in the repository");
-PressRelease pressRelease = new PressRelease();
-pressRelease.setPath("/newtutorial");
-pressRelease.setTitle("This is the first tutorial on OCM");
-pressRelease.setPubDate(new Date());
-pressRelease.setContent("Many Jackrabbit users ask to the dev team to make a tutorial on OCM");
-			
-ocm.insert(pressRelease);
-ocm.save();
-			
-// Retrieve 
-System.out.println("Retrieve a press release from the repository");
-pressRelease = (PressRelease) ocm.getObject("/newtutorial");
-System.out.println("PressRelease title : " + pressRelease.getTitle());
-			
-// Delete
-System.out.println("Remove a press release from the repository");
-ocm.remove(pressRelease);
-ocm.save();
-{code}
\ No newline at end of file



Mime
View raw message