有没有一种方法可以在Jackrabbit filevault xml文档中垂直格式化多值属性?

时间:2019-06-18 16:15:19

标签: xml aem sling jackrabbit

我们在git repo中使用FileVault xml文件来配置在Adobe 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 diff非常难看。

所以我宁愿格式化这样的列表:

<?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属性值中出现多余的空格。

是否有其他垂直格式不会导致类似的空白?

1 个答案:

答案 0 :(得分:0)

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

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

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

这是我的真实例子:

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节点(运行模式,文件名)。请注意,数据类型(布尔,长,...)的指定方式不同。但是您可以混合使用两种格式,因此不必迁移每个配置节点。