Subject: RE: [xsl] Namespace de-duplication for dynamically generated elements From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 9 Sep 2008 09:44:30 +0100 |
At the point where you generate the top-level element, do <output> <xsl:copy-of select="/order/namespace::*"/> Michael Kay http://www.saxonica.com/ > For reasons which I won't bore you with, we have an input XML > format of the style: > > customer1.xml: > <order xmlns:pt="urn:ex"> > <foo name="pt:zip"> apple </foo> > <foo name="pt:zap"> orange </foo> > </order> > > customer2.xml: > <order xmlns:go="urn:ex"> > <foo name="go:zip"> pear </foo> > <foo name="go:zap"> banana </foo> > </order> > > We want a single XSLT which will handle these without a > priori knowledge of the QNames or namespace *inside* the > @name attribute. We need to transform these into: > > customer1-out-desired.xml: > <output xmlns:pt="urn:ex"> > <pt:zip> apple </pt:zip> > <pt:zap> orange </pt:zap> > </output> > > customer2-out-desired.xml: > <output xmlns:go="urn:ex"> > <go:zip> pear </go:zip> > <go:zap> banana </go:zap> > </output> > > After a long struggle, I've managed some hacky XSLT which > manages the namespace mapping from strings and NS > declarations to prefixed QName elements, however I end up > getting the xmlns:pt="urn:ex" element on > *every* leaf element (e.g. <go:zip xmlns:go="urn:ex">), > rather than just once on the document element as I would like it: > > > customer1-out-actual.xml: > <output> > <pt:zip xmlns:pt="urn:ex"> apple </pt:zip> > <pt:zap xmlns:pt="urn:ex"> orange </pt:zap> </output> > > customer2-out-actual.xml: > <output> > <go:zip xmlns:go="urn:ex"> pear </go:zip> > <go:zap xmlns:go="urn:ex"> banana </go:zap> </output> > > Does anyone know of any tricks to avoid this situation? > > Cheers, > > Ian > > PS - The relevant XSLT snippet I've written is: > > <xsl:template match="foo"> > <xsl:element name="{substring-after(@name,':')}" > > namespace="{namespace-uri-for-prefix(substring-before(@name,':'),.)}"> > <xsl:value-of select="."> > </xsl:element> > </xsl:template> > > -- > Ian.Stokes-Rees@xxxxxxxxxxxx +1 (617) 418-4168 SP Metric > Limited, Technology Consulting
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Namespace de-duplication , Andrew Welch | Thread | Re: [xsl] Namespace de-duplication , Florent Georges |
Re: [xsl] Namespace de-duplication , Andrew Welch | Date | Re: [xsl] Namespace de-duplication , Florent Georges |
Month |