I am a XSLT newbie and have a simple task:
Suppose I have the following XML:
<Element1> <Element2 attr1="1"/> </Element1> <Element1 attr1="2"/> <Element1> <Element2 attr1="2"/> </Element1>
I want to transform the XML to the same XML with one change: All attributes named "attr1" no matter where they are have to be transformed so that for example "1" will be "A" and "2" will be "X", i. e. to
<Element1> <Element2 attr1="A"/> </Element1> <Element1 attr1="X"/> <Element1> <Element2 attr1="X"/> </Element1>
How can I achieve this? Thanks in advance!
xslt 2 version below works:
Another way, using
document
function:You can define characters to replace and replacing chars, then use
translate
. You can use this XSLT:Another way:
<xsl:template match="@attr1">
will match all attributesattr1
, then usingxsl:choose
you creates appropriate value for this attribute.You didn't say what happens when @attr=3 for example so there is an otherwise clause to just copy the value if it is not one of the selected.