当前位置: 首页 > 工具软件 > JCR > 使用案例 >

【记录十九】JCR2.0 节点类型

翁凯定
2023-12-01

基本主节点类型

所有存储库必须提供基主节点类型,NT:基部,作为一个内置的类型。

nt:base

[nt:base] abstract

  • jcr:primaryType (NAME) 强制性的,每个节点都必须有的

  • jcr:mixinTypes (NAME) 非强制性的受保护的多值NAME属性

nt:base 是抽象的主节点类型,它是所有其他主节点类型的基础类型。它是唯一没有超类型的主节点类型。

nt:base 通过属性 jcr:primaryType和 jcr:mixinTypes公开有关节点的类型信息。

由于每个其他主要类型都必须是nt:base的子类型,因此每个主要节点类型都将继承这两个反映类型的属性定义。

jcr:primaryType 是一个受保护的强制性NAME属性,其中包含其节点的声明的主节点类型的名称。存储库必须在节点的整个生命周期内准确地保持其值。由于这是强制性的,因此每个节点都将具有此属性。

jcr:mixinTypes 是一个非强制性的受保护的多值NAME属性,该属性保存其节点的声明的mixin节点类型的列表。它不是强制性的,但必须存在于具有一个或多个声明的混合类型的任何节点上。如果存在,则存储库必须在节点的整个生命周期内准确地保持其值.

标准应用程序节点类型

JCR定义了许多标准的应用程序节点类型,旨在支持常见的应用程序级实体。 存储库可以提供零个或多个作为内置类型。

nt:hierarchyNode

[nt:hierarchyNode] > mix:created abstract
此抽象节点类型充当nt:file和nt:folder的超类型,并继承mix:created的项目定义,因此需要该节点类型的存在.

nt:file

[nt:file] > nt:hierarchyNode primaryitem jcr:content

  • jcr:content (nt:base) mandatory

此节点类型的节点可用于表示文件。 该节点类型继承了nt:hierarchyNode的项目定义,并且需要一个名为jcr:content的子节点。 jcr:content节点用于保存文件的实际内容。 该子节点是必需的,但不是自动创建的。 它的节点类型将取决于应用程序,因此必须由用户添加。 一种常见的方法是使jcr:content成为nt:resource类型的节点。 jcr:content子节点也被指定为其父节点的主要子项。

nt:linkedFile

[nt:linkedFile] > nt:hierarchyNode primaryitem jcr:content

  • jcr:content (REFERENCE) mandatory

nt:linkedFile节点类型与nt:file相似,除了内容节点不直接存储为子节点,而是由REFERENCE属性指定。 这允许内容节点驻留在工作空间中的任何位置,并被多个nt:linkedFile节点引用。 内容节点必须是可引用的。 要支持此节点类型,就需要支持具有参照完整性的可参照节点

nt:folder

[nt:folder] > nt:hierarchyNode

    • (nt:hierarchyNode) VERSION

此类型的节点可用于表示文件夹或目录。 该节点类型继承了nt:hierarchyNode的项目定义,并增加了具有任意数量的其他任何名称的nt:hierarchyNode子节点的功能。 特别是,这意味着它可以具有类型为nt:folder,nt:file或nt:linkedFile的子节点。

nt:resource

[nt:resource] > mix:mimeType, mix:lastModified
primaryitem jcr:data

  • jcr:data (BINARY) mandatory

此节点类型可用于表示文件的内容。 特别是,nt:file节点的jcr:content子节点通常是nt:resource。 请注意,此节点类型的定义指示多重继承

mix:title

[mix:title] mixin

  • jcr:title (STRING) protected? OPV?
  • jcr:description (STRING) protected? OPV?

此混合节点类型可用于向节点添加标准化的标题和描述属性。

mix:created

[mix:created] mixin

  • jcr:created (DATE) autocreated protected? OPV?
  • jcr:createdBy (STRING) autocreated protected? OPV?

此混合节点类型可用于将标准化的创建信息属性添加到节点。 在使这些属性受到保护的实现中,它们的值由存储库控制,该存储库应在具有这种mixin类型的节点的初始持久存在时适当地设置它们。 如果将此混入添加到已存在的节点,则这些属性的语义是特定于实现的

mix:lastModified

[mix:lastModified] mixin

  • jcr:lastModified (DATE) autocreated protected? OPV?
  • jcr:lastModifiedBy (STRING) autocreated protected? OPV?

此混合节点类型可用于向节点提供标准化的修改信息属性。 在使这些属性受到保护的实现中,它们的值由存储库控制,该存储库应在使用此mixin对节点的子图进行重大修改时适当地对其进行设置。 构成重大修改的内容将取决于节点子图各个部分的语义,并且取决于实现。

mix:language

[mix:language] mixin

  • jcr:language (STRING) protected? OPV?

此混合节点类型可用于提供标准化的属性,该属性指定用于表达节点内容的自然语言。 jcr:language属性的值应该是RFC 46465中定义的语言代码。示例包括“ en”(英语),“ en-US”(美国英语),“ de”(德语)和“ de-CH” ”(瑞士德语)。

mix:mimeType

[mix:mimeType] mixin

  • jcr:mimeType (STRING) protected? OPV?
  • jcr:encoding (STRING) protected? OPV?

此混合节点类型可用于为节点提供标准化的模仿类型和编码属性。

如果此类型的节点的主项目是单值BINARY属性,则jcr:mimeType属性指示适用于该属性内容的媒体类型6,如果该媒体类型是适用文本编码的媒体类型,则 jcr:encoding属性指示使用的字符set7。

如果此类型的节点不满足上述前提条件,则jcr:mimeType和jcr:encoding属性的解释取决于实现。

nt:address

[nt:address]

  • jcr:protocol (STRING)
  • jcr:host (STRING)
  • jcr:port (STRING)
  • jcr:repository (STRING)
  • jcr:workspace (STRING)
  • jcr:path (PATH)
  • jcr:id (WEAKREFERENCE)

此节点类型不仅可以用于表示特定工作空间中的JCR项的位置,还可以用于表示所有JCR存储库中所有工作空间中的JCR项的位置。

jcr:protocol属性存储一个字符串,该字符串包含用于访问目标系统信息库的协议。

jcr:host属性存储一个字符串,其中包含要通过其访问存储库的系统的主机名。

jcr:port属性存储一个字符串,其中包含用于访问目标系统信息库的端口号。

这些属性的语义未定义,但假定为应用程序已知。属性的名称和描述不是规范性的,并且存储库不对属性执行任何特定的语义解释。

jcr:repository属性存储一个字符串,其中包含目标存储库的名称。

jcr:workspace属性存储工作区的名称。

jcr:path属性存储项目的路径。

jcr:id属性存储对节点的弱引用。

在大多数情况下,将使用jcr:path或jcr:id属性,但不能同时使用两者,因为它们可能指向不同的节点。如果缺少jcr:path和jcr:id以外的任何其他属性,则可以将该地址解释为相对于当前容器的地址,与丢失的说明符处于同一级别。例如,如果未指定存储库,那么该地址可以解释为引用当前存储库中的工作空间和路径或ID。

实体标签

对于应用程序来说,能够快速查找自上次检查后BINARY属性的值是否已更改通常很有用。 这在确定是否使包含BINARY值副本的缓存无效时特别有用。
mix:etag mixin类型为BINARY属性定义标准化的身份验证器,类似于HTTP / 1.18中使用的实体标签。

mix:etag

[mix:etag] mixin

  • jcr:etag (STRING) protected autocreated

jcr:etag属性是一个不透明字符串,其语法与在HTTP / 1.1中为实体标签定义的语法相同。 语义上,jcr:etag与HTTP / 1.1强实体标签相当。

在创建mix:etag节点N或将mix:etag分配给N时,存储库必须创建具有实现确定值的jcr:etag属性。

如果对N进行以下任何更改,则jcr:etag属性的值必须立即更改:

将BINARY属性添加到N。

从N中删除了BINARY属性。

N的现有BINARY属性的值更改。

非结构化内容

可以通过支持自由格式的节点类型来提供对非结构化内容的支持:nt:unstructured。 支持此节点类型需要支持UNDEFINED属性类型值。

nt:unstructured

[nt:unstructured]

orderable

    • (UNDEFINED) multiple
    • (UNDEFINED)
    • (nt:base) = nt:unstructured sns VERSION

此节点类型用于存储非结构化内容。 它允许使用任意名称的任意数量的子节点或属性。 它还允许多个具有相同名称的节点以及具有任何名称的多值和单值属性。 此节点类型还支持客户端可订购的子节点。

待持续更新中。。。。。。。

 类似资料: