Subject: [xsl] Losing a namespace declaration while merging two elements From: "Costello, Roger L." <costello@xxxxxxxxx> Date: Fri, 22 Jul 2011 10:53:12 -0400 |
Hi Folks, I want to "merge" this: <attribute ref="xlink:href" xmlns="http://www.w3.org/2001/XMLSchema" /> with this: <xsd:attribute name="href" type="xsd:anyURI" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> to produce this: <attribute name="href" type="xsd:anyURI" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> Notice that the value of @type is a QName ( xsd:anyURI ) so I need the namespace declaration that has its prefix ( xsd ). I wrote a function to do the merge: <xsl:function name="f:merge-ref-and-refed"> <xsl:param name="ref-item" /> <xsl:param name="refed-item" /> <xsl:element name="{name($ref-item)}" namespace="{namespace-uri($ref-item)}"> <xsl:for-each select="$ref-item/@*[not(name() eq 'ref')]"> <xsl:attribute name="{name(.)}"><xsl:sequence select="." /></xsl:attribute> </xsl:for-each> <xsl:for-each select="$refed-item/@*"> <xsl:attribute name="{name(.)}"><xsl:sequence select="." /></xsl:attribute> </xsl:for-each> <xsl:sequence select="$refed-item/*" /> </xsl:element> </xsl:function> However, that produces this: <attribute name="href" type="xsd:anyURI" xmlns="http://www.w3.org/2001/XMLSchema" /> It lost this important namespace declaration: xmlns:xsd="http://www.w3.org/2001/XMLSchema" How do I fix my function so that it doesn't lose any namespace declarations? /Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Finding preceeding-siblin, Hank Ratzesberger | Thread | Re: [xsl] Losing a namespace declar, David Carlisle |
Re: [xsl] Finding preceeding-siblin, Andrew Welch | Date | Re: [xsl] Losing a namespace declar, David Carlisle |
Month |