将具有唯一标识符的标签插入到 XML 中

将具有唯一标识符的标签插入到 XML 中

我可以通过这种方式将具有自定义固定值的新节点添加到我的 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>&#xa;</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

相关内容