Subject: RE: [xsl] adding attribute to copy From: Jarno.Elovirta@xxxxxxxxx Date: Thu, 26 Sep 2002 09:53:51 +0300 |
Hi, > i need an XSL stylesheet that transforms an XML input so that > there ist > he same output > only one attribute has to be added to one element called <richtext> > it is the attribute xmlns="..." > so taht it says <richtext xmlns=""> in the output- Think again. You're not trying to add an attribute, you're trying to change the default namespace URI of richtext element and all it's children - actually you didn't specify if you wanted to change it for all descendants or just those who have the same NS-URI as richtext originally had. Try something like this <xsl:variable name="new" select="'http://your.new.and.improved.namespace.uri'" /> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="*[local-name() = 'richtext']"> <xsl:element name="{local-name()}" namespace="{$new}"> <xsl:apply-templates select="@*|node()" mode="ns"> <xsl:with-param name="old" select="namespace-uri()" /> </xsl:apply-templates> </xsl:element> </xsl:template> <xsl:template match="*[local-name() = 'richtext']" mode="ns"> <xsl:param name="old" /> <xsl:element name="{local-name()}" namespace="{$new}"> <xsl:apply-templates select="@*|node()" mode="ns"> <xsl:with-param name="old" select="namespace-uri()" /> </xsl:apply-templates> </xsl:element> </xsl:template> <xsl:template match="@*|node()" mode="ns"> <xsl:param name="old" /> <xsl:choose> <xsl:when test="namespace-uri() = $old and self::*"> <xsl:element name="{name()}" namespace="{$new}"> <xsl:apply-templates select="@*|node()" mode="ns"> <xsl:with-param name="old" select="$old" /> </xsl:apply-templates> </xsl:element> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:apply-templates select="@*|node()" mode="ns"> <xsl:with-param name="old" select="$old" /> </xsl:apply-templates> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> That probably won't handle all cases, Jarno XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] adding attribute to copy, Michael Kay | Thread | AW: [xsl] adding attribute to copy, Sascha Aßbach |
[xsl] Before & after, Kim | Date | AW: [xsl] adding attribute to copy, Sascha Aßbach |
Month |