Re: [xsl] Generate a list of declared namespaces

Subject: Re: [xsl] Generate a list of declared namespaces
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 11 Nov 2009 21:04:12 -0500
At 2009-11-11 21:00 -0500, I wrote:
At 2009-11-12 00:42 +0000, Anders Viklund wrote:
I would like to generate a list of declared namespaces for an xml file.

Any ideas how I can do this?

Use the namespace axis. You have to search the entire document in case you have namespaces declared below the document element.


I hope the example below helps.

. . . . . . . Ken

I had second thoughts about my first answer, which was looking for uniqueness in the name of the prefix, when it should have been looking for uniqueness in the namespace URI.


A revision is below that gives the same answer, but I'm now thinking you should be reporting the unique namespaces and not the unique prefixes. If you need the unique declarations, you'll need to combine these two examples.

. . . . . . . . . . Ken

t:\ftemp>xslt anders.xsl anders.xsl
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:anders="urn:X-Anders"

t:\ftemp>type anders.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:output method="text"/>

<xsl:variable name="ns" select="//namespace::*[name(.)!='xml']"/>

<xsl:template match="/" xmlns:anders="urn:X-Anders">
  <xsl:for-each select="$ns">
    <xsl:if test="generate-id(.)=
                  generate-id($ns[.=current()][1])">
    <xsl:value-of select="concat('xmlns:',name(.),'=&#x22;',.,'&#x22;')"/>
    <xsl:text>
</xsl:text>
    </xsl:if>
  </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

t:\ftemp>

--
Vote for your XML training:   http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread