0

我正在尝试在 CQ CRX (Adobe DAM) 中存储多个复杂的元数据值。多个简单元数据值只是资产元数据节点中的多值属性。复杂元数据值是资产元数据节点的子节点。但是像下面的例子中的多个复杂的元数据值呢?我在 CRX (JCR) 中找不到任何示例。(也许我应该用 rdf 标签包装标记元数据?)

<xmpDM:markers>
  <xmpDM:marker> 
     <xmpDM:name>name01</xmpDM:name>
     <xmpDM:startTime>18645250f44100</xmpDM:startTime>
     <xmpDM:duration>1000</xmpDM:duration>
  </xmpDM:marker>
  <xmpDM:marker> 
     <xmpDM:name>name02</xmpDM:name>
     <xmpDM:startTime>18645250f44101</xmpDM:startTime>
     <xmpDM:duration>1000</xmpDM:duration>
  </xmpDM:marker>
</xmpDM:markers>
4

1 回答 1

1

可以将序列化的 xmpDm:marker 元素存储为多值字段的元素。但它的缺点是您不能直接在查询中处理 xmpDm:marker 的属性。

我个人会为资产元数据节点下的每个标记元素创建一个标记子节点,并为每个 xmpDm:marker 子元素创建一个子节点。然后每个子节点都包含它对应的 xmpDm:marker 元素的属性。

这可以很容易地完成,如下所示:

//given you have the content resource of your asset
Resource metaData = assetResource.getChild(DamConstants.METADATA_FOLDER);
Node node = metaData.adaptTo(Node.class);

// assume your already transformed your xml nodes into a list of marker objects
for(Marker marker : markers){
  Node markerNode = node.addNode(marker.getName());
  node.setProperty( ....)
}   
于 2013-07-29T12:50:52.530 回答