在终端中编辑 XML 文件
edit XML file in terminal
我在 Linux 系统上有一个服务器 运行,我想编辑 Imagemagick 的一个 XML 文件。
文件内容为:
<policymap>
<policy domain="..." rights=".." pattern="...." />
<policy domain="..." rights=".." pattern="...." />
..
..
</policymap>
所以,我想添加这一行:
<policy domain="coder" rights="read | write" pattern="PDF" />
请问我该怎么做。
谢谢。
您可以使用 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
我在 Linux 系统上有一个服务器 运行,我想编辑 Imagemagick 的一个 XML 文件。
文件内容为:
<policymap>
<policy domain="..." rights=".." pattern="...." />
<policy domain="..." rights=".." pattern="...." />
..
..
</policymap>
所以,我想添加这一行:
<policy domain="coder" rights="read | write" pattern="PDF" />
请问我该怎么做。
谢谢。
您可以使用 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