有没有办法在 Jackrabbit 文件库 xml 文档中垂直格式化多值属性?

Is there a way to format multi-valued properties vertically in a Jackrabbit filevault xml doc?

我们使用 git 存储库中的 FileVault xml 文件在我们的 Adob​​e Experience Manager 实例中配置我们的自定义 OSGi 服务 运行。

这在很多情况下都非常有效,但似乎我们必须在仅以逗号分隔的字符串中水平列出多值属性,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
  jcr:primaryType="sling:OsgiConfig"
  aLongMultiValuedProperty="[first,second,third,fourth,fifth]"/>

这个例子看起来还不错,但我最近编辑了一个文件,其中一行有 1998 个字符长,git 差异非常难看。

所以我宁愿能够像这样格式化我们的列表:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
  jcr:primaryType="sling:OsgiConfig"
  aLongMultiValuedProperty="[
    first,
    second,
    third,
    fourth,
    fifth]"/>

但是,这样做会导致 JCR 属性 值中出现额外的空格。

是否有不同的垂直格式不会导致像那样的额外空白?

在您的情况下,我建议使用(较新的)属性格式。使用尾部反斜杠 \,您可以指定一行在下一行继续。

不幸的是,网络上几乎没有有用的文档。最好执行以下 XPath 查询以查找一些示例:

/jcr:root/apps//*[jcr:like(fn:name(), '%.config')]

这是我的一个 real-world 例子:

com.day.cq.wcm.msm.impl.actions.ContentUpdateActionFactory.config

cq.wcm.msm.action.excludednodetypes=[ \
  "cq:LiveSyncConfig", \
  "cq:BlueprintSyncConfig", \
  "cq:LiveSyncAction", \
  "cq:CatalogSyncConfig", \
  "cq:CatalogSyncAction", \
  "cq:meta", \
  ]
cq.wcm.msm.action.excludedparagraphitems=[ \
  "cq:propertyInheritanceCancelled", \
  ]
cq.wcm.msm.action.excludedprops=[ \
  "jcr:(?!(title|description)$).*", \
  "sling:(?!(resourceType|resourceSuperType)$).*", \
  "cq:(?!(designPath|template|lastTranslationUpdate|targetEngine)$).*", \
  "publishCampaignId", \
  ]
cq.wcm.msm.action.ignoredMixin=[ \
  ".*", \
  ]    

简而言之就是一个属性文件,后缀为.config。其他一切就像 sling:OsgiConfig 节点(run-modes,文件名)。请注意 data-types (boolean, long, ...) 的指定方式不同。但是您可以混合使用这两种格式,因此您不必每隔 config-node.

就迁移一次