Re: [xsl] Name Spaces in Selects and xsl:element

Subject: Re: [xsl] Name Spaces in Selects and xsl:element
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 5 May 2005 16:26:14 +0100
> So, given the sample data, how would one
> select all elements who's namespace is "fn"?

select="//fn:*"

does just what you say 9so long as fn prefix is bound to a namespace in
your stylesheet (the source doesn't have to use the same prefix)

But that probably isn't what you want to do, as selecting all elements
in a single node set isn't usually useful. In this case you'd get fn:A
and all the fn:B's

if you justuse a normal apply-templates then you can make all elements
be discarded
<xsl:template match="*"/>
and then have more specific templates to do something with fn elements,
eg
<xsl:template match="fn:*">
 <xsl:apply-templates/>
</xsl:template>

will produce the result that you wanted.

  Another question, about xsl:element.  When I use this to create
  elements, the elements never get the appended xmlns attribute added. 

note that namespace declarations (xmlns....) are not attributes to
XPath/XSLT (even though they use a similar syntax)


> <NewElement xmlns:ms="urn:schemas-microsoft-com:xslt">
> How can this be avoided without using the xsl:element command?

Th ms namespace prefix must be in scope in your stylesheet.
If you need it declared but don't need it in the result add
omit-result-prefixes="ms"
to your xsl:stylesheet element.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread