This is very simple: Use the identity transform and create a template that transforms the name
attribute:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@name">
<xsl:attribute name="id">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
This will leave everything in the document except for name
attributes exactly as it is. If you only want to change the name
attribute on person
elements, put a more restrictive XPath in the template's match
attribute, e.g. person/@name
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…