Есть ли способ отформатировать многозначные свойства по вертикали в файле jackrabbit filevault xml doc? - PullRequest
0 голосов
/ 18 июня 2019

Мы используем FileVault XML-файлы в git-репо для настройки наших пользовательских служб OSGi, работающих в нашем экземпляре Adobe Experience Manager.

Во многих случаях это работает очень хорошо, но кажется, что мы должны перечислить многозначные свойства по горизонтали, в строке, разделенной запятыми, например:

<?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 голосов
/ 19 июня 2019

В вашей ситуации я бы порекомендовал использовать (более новые) свойства формата. С помощью обратной косой черты \ вы можете указать, что строка продолжается на следующей строке.

К сожалению, в Интернете мало полезной документации. Лучше всего выполнить следующий запрос 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. Все остальное как слинг: узлы OsgiConfig (режимы работы, имя файла). Только учтите, что типы данных (логические, длинные, ...) указаны по-разному. Но вы можете смешивать оба формата, поэтому вам не нужно переносить каждый узел конфигурации.

...