![将具有唯一标识符的标签插入到 XML 中](https://linux22.com/image/118518/%E5%B0%86%E5%85%B7%E6%9C%89%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%AC%A6%E7%9A%84%E6%A0%87%E7%AD%BE%E6%8F%92%E5%85%A5%E5%88%B0%20XML%20%E4%B8%AD.png)
我可以通过这种方式将具有自定义固定值的新节点添加到我的 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