これにより、カスタム固定値を持つ新しいノードを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