Subject: [xsl] Namespace getting carried over to output XML From: "Prashanth T S" <tsprashanth@xxxxxxxxx> Date: Tue, 11 Jul 2006 10:55:44 -0400 |
Hi, I tried to apply a xsl on a xhtml document and once it passes through the xsl, I am getting the namespace carried over to my output xhtml document in places unnecessary. Below is an example.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform " xmlns:xhtml="http://www.w3.org/1999/xhtml " xmlns=" http://www.w3.org/1999/xhtml" xmlns:abc="abctest" exclude-result-prefixes="pwc">
My xsl is supposed to change <a href> to my custom tag. Basically my output should be
The problem is my output is coming this way <abc:link xmlns:xhtml=" http://www.w3.org/1999/xhtml " xmlns:abc="abctest" linkend="/contents/myfolder/abc.htm">Click here</abc:link>
The namespace is getting carried over to the output in the place where I am replacing the text. For reference, below is my full XSL
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" xmlns:xhtml=" http://www.w3.org/1999/xhtml" xmlns=" http://www.w3.org/1999/xhtml" xmlns:abc="abctest" exclude-result-prefixes="abc"> <!--Copying through all the contents of the <html> and <head> tags--> <xsl:output method="xml" version="1.0" indent="yes" doctype-system=" http://www.w3.org/TR/xhtml1/DTD/xhtml1-translational.dtd" doctype-public="-//W3C/DTD XHTML 1.0 Transitional//EN"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template>
<!-- Normally, the transformed XML elements will match this template, which just copies them into the output stream--> <!-- THE REPLACEMENT PORTION--> <xsl:template name="anchor"> <xsl:choose> <xsl:when test="@href"> <xsl:choose> <xsl:when test="contains(@href,':') "> <xsl:element name="pwc:ulink"> <xsl:attribute name="url"> <xsl:value-of select="@href"/> </xsl:attribute> <xsl:value-of select="."/> </xsl:element> </xsl:when> <xsl:otherwise> <xsl:element name="link"> <xsl:attribute name="linkend"> <xsl:value-of select="@href"/> </xsl:attribute> <xsl:value-of select="."/> </xsl:element> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:apply-templates/> </xsl:otherwise> </xsl:choose> </xsl:template>
<!--SEARCH FOR LINK AND REPLACE WITH ABC:LINK --> <xsl:template match="@* | node() | processing-instruction()"> <xsl:choose> <xsl:when test="name()='a'"> <xsl:call-template name="anchor"/> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
Thanks Prashanth
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Namespace getting carried, J.Pietschmann | Thread | [xsl] Good app to apply transformat, Chad Chelius |
Re: [xsl] values in sequence after , Florent Georges | Date | Re: [xsl] values in sequence after , Florent Georges |
Month |