[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Copy-of & New Namespace prefix
Problem solved. Thanks to George and Michael for the help. Final stylesheet is thus: <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <!-- matches elements --> <xsl:template match="*"> <xsl:element name="foo:{local-name()}" namespace="http://www.myFoo.org/"> <xsl:copy-of select="text()|@*"/> <xsl:apply-templates/> </xsl:element> </xsl:template> -----Original Message----- From: Michael Kay [mailto:mike@xxxxxxxxxxxx] Sent: Wednesday, February 01, 2006 10:54 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: Copy-of & New Namespace prefix xsl:copy-of will only create an exact copy. To create a modified copy, you need to recursively walk the document modifying each element as necessary. Something like this: <xsl:template match="*"> <xsl:element name="{local-name()}" namespace="(new namespace)"> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:element> </xsl:template> Note also that you should be thinking in first of the expanded-name of the elements (that is, their namespace URI and local-name) - the prefixes and namespace declarations will follow. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Woods, Christopher [mailto:cwoods@xxxxxxxxxxxxxxxxx] > Sent: 01 February 2006 15:41 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Copy-of & New Namespace prefix > > Hello, > > I want to create a transform that takes an (X)HTML as an input and > gives back the unchanged but for the addition of a namespace prefix to > each element. Input file might be as follows: > > <html> > <body> > <p><b>Generalized foo here</b></p> > <ol> > <li>Foo 1</li> > <li>Foo 2</li> > </ol> > <p>Final foo</p> > </body> > </html> > > Output might be as follows: > > <foo:html> > <foo:body> > <foo:p><foo:b>Generalized foo here</foo:b></foo:p> <foo:ol> > <foo:li>Foo 1</foo:li> <foo:li>Foo 2</foo:li> </foo:ol> <foo:p>Final > foo</foo:p> </foo:body> </foo:html> > > My instinct say to use <xsl:copy-of> but I'm confused about how I > might add the prefix. Thanks very much.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|