You can define characters to replace and replace characters, then use translate . You can use this XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" indent="yes"/> <xsl:variable name="in">12</xsl:variable> <xsl:variable name="out">AX</xsl:variable> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="@attr1"> <xsl:attribute name="attr1"> <xsl:value-of select="translate(., $in, $out)"/> </xsl:attribute> </xsl:template> </xsl:stylesheet>
Another way:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" indent="yes"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="@attr1"> <xsl:choose> <xsl:when test=". = '1'"> <xsl:attribute name="attr1"> <xsl:text>A</xsl:text> </xsl:attribute> </xsl:when> <xsl:when test=". = '2'"> <xsl:attribute name="attr1"> <xsl:text>X</xsl:text> </xsl:attribute> </xsl:when> </xsl:choose> </xsl:template> </xsl:stylesheet>
<xsl:template match="@attr1"> will match all attr1 attributes, and then using xsl:choose you will create the appropriate value for this attribute.
Kirill Polishchuk
source share