Subject: [xsl] How to output the unused namespaces in the XML document? From: "Costello, Roger L." <costello@xxxxxxxxx> Date: Mon, 30 Aug 2010 16:38:11 -0400 |
Hi Folks, Consider this XML document: <?xml version="1.0"?> <N1:NumberList xmlns:N1="http://www.example1.org" xmlns:N2="http://www.example2.org"> <Number>23</Number> <Number>41</Number> <Number xmlns:N3="http://www.example3.org">70</Number> <Number>103</Number> <Number>99</Number> <Number>6</Number> </N1:NumberList> Notice that there are three (3) namespaces, but two of them are unused: http://www.example2.org http://www.example3.org I want an XSLT transform that will output all the unused namespaces in the input XML document. Here's the solution I came up with: <xsl:template match="*"> <xsl:variable name="elem" select="." /> <xsl:for-each select="namespace::*[. != 'http://www.w3.org/XML/1998/namespace']"> <xsl:variable name="ns" select="." /> <xsl:if test="not($elem/ancestor::*[namespace::* = $ns])"> <xsl:if test="not($elem/descendant-or-self::*[namespace-uri() = $ns])"> This namespace is unused: <xsl:value-of select="$ns" /> </xsl:if> </xsl:if> </xsl:for-each> <xsl:apply-templates select="*" /> </xsl:template> Is there a better solution? (I am using XSLT 1.0) /Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Error XSLT 1.0 (xsltproc), pankaj . c | Thread | Re: [xsl] How to output the unused , Evan Lenz |
Re: Fw: [xsl] Question on duplicate, Hermann Stamm-Wilbra | Date | Re: [xsl] How to output the unused , Evan Lenz |
Month |