редактировать XML-файл в терминале - PullRequest
0 голосов
/ 14 марта 2019

У меня есть сервер, работающий в системе Linux, и я хочу отредактировать XML-файл Imagemagick.

Содержимое файла:

<policymap>
  <policy domain="..." rights=".." pattern="...." />
  <policy domain="..." rights=".." pattern="...." />
..
..    
</policymap>

Итак, я хочу добавить эту строку:

  <policy domain="coder" rights="read | write" pattern="PDF" />

Пожалуйста, как мне это сделать.

Спасибо.

1 Ответ

1 голос
/ 14 марта 2019

Вы можете сделать это автоматически с процессором XSLT-1.0 и шаблоном идентификации :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0">
<xsl:output method="xml" />

  <!-- Identity template - in XSLT-3.0 it can be replaced by 
       <xsl:mode on-no-match="shallow-copy"/> 
   -->
  <xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="/policymap">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*" />
        <!-- Added new line -->
        <policy domain="coder" rights="read | write" pattern="PDF" />
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

Его вывод:

<?xml version="1.0"?>
<policymap>
    <policy domain="..." rights=".." pattern="...."/>
    <policy domain="..." rights=".." pattern="...."/>
    ..
    ..    
    <policy domain="coder" rights="read | write" pattern="PDF"/>
</policymap>

Команда * Ubuntu может быть

xsltproc transform.xslt source.xml

или используя Saxon :

java -jar saxon9he.jar -xsl:b.xslt b.xml
...