Mixin types:
-
mix:lockable
-
mix:referenceable
-
mix:versionable
Primary types:
-
nt:base (the base type of all other node types)
-
nt:unstructured
-
nt:hierarchyNode
-
nt:file
-
nt:linkedFile
-
nt:folder
-
-
nt:resource
-
nt:nodeType
-
nt:propertyDefinition
-
nt:childNodeDefinition
-
nt:versionHistory
-
nt:versionLabels
-
nt:version
-
nt:frozenNode
-
nt:versionedChild
-
nt:query
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 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 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 propertymyapp:emailAddress to a node.