解決策は非常に単純です(2つのテンプレートのみ):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="xref">
<a href="{@rid}"><xsl:apply-templates/></a>
</xsl:template>
</xsl:stylesheet>
この変換が提供されたXMLドキュメントに適用される場合:
<p>
Hello world <xref rid='1234'>1234</xref> this is a new world starting
<xref rid="5678">5678</xref>
finishing the new world
</p>
必要な正しい結果が生成されます。
<p>
Hello world <a href="1234">1234</a> this is a new world starting
<a href="5678">5678</a>
finishing the new world
</p>
説明:
IDルールは、実行対象として選択されたすべてのノードを「現状のまま」コピーします。
AVT(属性値テンプレート)を使用すると、xsl:attribute