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

Subject: Re: [xsl] Name Spaces in Selects and xsl:element
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Thu, 5 May 2005 09:26:45 -0700
Simple question:
If you element is named fn:field, and you do an apply templates of
select="fn:field", does your match have to be "fn:field", or does it
work fine with "field", and if not, is there a way to set up a match
for field for all namespaces?  (maybe that was all ready answered,
reviewing this thread)

On 5/5/05, Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> > omit-result-prefixes="ms"
> Did you mean exclude-result-prefixes?
>
> exclude-result-prefixes is working, except for variables/elements that
> are being evaluated with xxx:nod-set().  I have a template rule which
> sorts data, and creates a number attribute from a date, the result
> might look something like this:
>
> <fn:members>
>  <fn:member>
>      <field name="first_name">Suzie</field>
>      <field name="dob" num_dtm="19990604"/>1999-06-04</field>
>  </fn:member>
>  <fn:member>
>      <field name="first_name">Bob</field>
>      <field name="dob" num_dtm="20010304"/>2001-03-04</field>
>  </fn:member>
> </fn:members>
>
> Contained in the variable "sorted_members".  The xml result of this is
> not as "pretty" as I'd like it, all though better for sure; it removed
> my other namespaces, but the xmlns definition for "fn" lingers.
>
> Any ideas on that?
>
> On 5/5/05, David Carlisle <davidc@xxxxxxxxx> wrote:
> >
> > > 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