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(.),'="',.,'"')"/>
<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(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--