Please suggest.
My XML data :
<XML>
<LogLevel>info</LogLevel>
<Content>
<Msg>
<AccountNo>6666</AccountNo>
<ApplName>
Testing</ApplName>
</Msg>
</Content>
<data><AccountNo>555555</AccountNo></data>
<AccountNo>444444444</AccountNo>
<Date>20140909</Date>
</XML>
I want to mask all the AccountNo to the output as below.
<XML>
<LogLevel>info</LogLevel>
<Content>
<Msg>
<AccountNo>******66</AccountNo>
<ApplName>Testing</ApplName>
</Msg>
</Content>
<data><AccountNo>******5555</AccountNo></data>
<AccountNo>******444</AccountNo>
<Date>20140909</Date>
</XML>
Java code :
XSLT : I am not good at XSLT i am learning it.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="AccountNo">
<xsl:variable name="acct-num" select="substring-before(substring-after(.,'AccountNo'), '/AccountNo')" />
<xsl:value-of select="concat('************', substring($acct-num, string-length($acct-num) - 2))" />
</xsl:template>
</xsl:stylesheet>
Could you please let me know what should be the XSLT..
I am getting wrong output :
<?xml version="1.0" encoding="UTF-8"?>
<XML>
<LogLevel>info</LogLevel>
<Content>
<Msg>************<ApplName>Testing</ApplName>
</Msg>
</Content>
<data>************</data>************<Date>20140909</Date>
</XML>