【问题标题】:edit XML file in terminal在终端中编辑 XML 文件
【发布时间】:2019-03-14 05:17:49
【问题描述】:

我有一台在 Linux 系统上运行的服务器,我想编辑一个 Imagemagick 的 XML 文件。

文件内容为:

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

所以,我想添加这一行:

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

请问我该怎么做。

谢谢。

【问题讨论】:

标签: xml linux shell imagemagick-convert wand


【解决方案1】:

您可以使用 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

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 2011-10-18
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多