我可以通过这种方式将具有自定义固定值的新节点添加到我的 XML 文件中xmlstarlet:
xmlstarlet ed --subnode "/legge190/data/lotto" --type elem -n newsubnode \
-v "myvalue"
但如何添加唯一标识符呢?
如果我尝试使用添加唯一标识符generate-id(.)
xmlstarlet ed --subnode "/legge190/data/lotto" --type elem -n newsubnode \
-v "generate-id(.)"
我没有 id 值,而是字符串generate-id(.)
。
谢谢
答案1
我已经用xsl
这样的文件解决了:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="cig">
<lottoID><xsl:value-of select="generate-id(.)"/></lottoID>
<!-- a linefeed -->
<xsl:text>
</xsl:text>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
id
由XPATH 函数生成generate-id
。
通过这种方式,我复制所有节点并在<lottoID>
该元素之前插入一个唯一标识符<cig>
(这是我的元素)输入 XML 文件)。
该命令与xmlstarlet 是:
xmlstarlet tr stile.xsl input.xml