我有一些XML文件,我需要自动编辑它们。
例如
<Content>
<Texts>
<Text id="1">
<en value="blaabla" />
</Text>
<Text id="2">
<en value="blablablablal" />
</Text>
</Texts>
</Content>
我需要复制“en value”行并将这些行添加到它们的下划线,但只需更改一次。
所以当处理完成后,结果应该是:
<Content>
<Texts>
<Text id="1">
<en value="blablabla" />
<fr value="blablabla" />
</Text>
<Text id="2">
<en value="blablablablal" />
<fr value="blablablablal" />
</Text>
</Texts>
</Content>
答案 0 :(得分:2)
您可以使用此XSLT转换XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="en[@value]">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
<fr value="{@value}"/>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
$ sed '/<en /p' data.txt | awk '/<en /{if(x++%2)sub(/<en /, "<fr ")}1'
<Content>
<Texts>
<Text id="1">
<en value="blaabla" />
<fr value="blaabla" />
</Text>
<Text id="2">
<en value="blablablablal" />
<fr value="blablablablal" />
sed
复制包含<en
awk
将奇数<en
更改为<fr
警告: <en ... />
必须是一行。