私は、固有のIDを生成するXML文書を持っています。いくつかのノードは既に属性を持っているかもしれません。その場合、これは置き換えられます。ドキュメント内のすべてのノードに属性が必要です。XSL - コピー時の属性の更新または作成
文書例は、私は、次のスタイルシート
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="*">
<xsl:copy>
<xsl:attribute name="uid">
<xsl:value-of select="generate-id(.)"/>
</xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
を使用していますが、次の出力を取得しています
<root>
<anode uid='123'/>
<anode/>
</root>
だろう。これは私が望むものに近いですが、既存のIDがテキストノードとして作成されないようにするにはどうすればよいですか?
<root uid="id515559">
<anode uid="id515560">123</anode>
<anode uid="id515562"/>
</root>
私はXSLT: How to change an attribute value during <xsl:copy>?を見てきましたが、私は、これは新しい属性を作成するために得ることができませんでした。
違いがある場合は、lxmlを使用してスタイルシートを処理しています。 Built-in template rule