Saturday 15 June 2013

prefix - Adding namespaces to elements only and changing to uppercase -



prefix - Adding namespaces to elements only and changing to uppercase -

i have xml coming below

<envelope> <content> <feild1>1</feild1> .... <feild10>10<feild10> </content> </envelope>

but want xml (add namespace prefix xs1 , content lower case c upper case "c"

<envelope> <content> <!-- note lower case c chnaged upper case ---> <xs1:feild1>1</xs1:feild1> <!-- , feild, xs1 added prefix --> .... <xs1:feild10>10</xs1:feild10> </content> </envelope>

please help looking xslt 1.0

here xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xs1="https://temp"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="*"> <xsl:element name="{name()}" namespace="https://temp"> <xsl:apply-templates select="@*|node()"/> </xsl:element> </xsl:template> <xsl:template match="@*"> <xsl:attribute name="{name}"><xsl:value-of select="."/></xsl:attribute> </xsl:template> </xsl:stylesheet>

hope helps

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xs1="https://temp"> <xsl:template match="/"> <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> <xsl:variable name="uppercase" select="'abcdefghijklmnopqrstuvwxyz'" /> <envelope> <xsl:for-each select="envelope/*"> <xsl:variable name="root" select="local-name(.)"/> <xsl:variable name="temp" select="translate($root,$smallcase,$uppercase)"/> <xsl:variable name="temp2" select="concat(substring($temp,1,1),translate(substring($temp,2,string-length($temp)),$uppercase,$smallcase))"/> <xsl:element name="{$temp2}"> <xsl:for-each select="child::*"> <xsl:element name="xs1:{local-name(.)}" namespace="https://temp"> <xsl:value-of select="node()"/> </xsl:element> </xsl:for-each> </xsl:element> </xsl:for-each> </envelope> </xsl:template> </xsl:stylesheet>

namespaces prefix

No comments:

Post a Comment