Есть XML:
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b id="1">
<c name="a">
A
</c>
</b>
</a>
Нужно заменить букву A в элементе c.
Вот XSLT для него:
<?xml version="1.0" encoding="UTF-8"?>
<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="b/c">
<xsl:copy>
<xsl:copy-of select="translate(.,'A','B')"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
На выходе получается такой XML:
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b id="1">
<c>
B
</c>
</b>
</a>
Все бы хорошо, но куда пропал атрибут "name" элемента "c" ?
Можно, конечно, заново создать элемент "c" с атрибутом name, но может есть способ попроще ?