[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Is it possible to set the default namespace with a
You need to create elements and attributes with the correct expanded name at the time you create them. If that means using xsl:element, so be it. xsl:namespace can only be used to create additional namespace nodes to those that are created automatically for the prefixes/uris used in element and attribute names; it can't be used to modify the name of an element or attribute node. As always, to understand this you need to understand the data model for namespaces. An element/attribute name is a triple, containing (prefix, uri, localname). A namespace node is a pair (prefix, uri). There is a consistency rule that if an element or attribute name exists containing prefix=P uri=U then there must be a namespace node (P, U). The namespace fixup process ensures that this namespace node is created automatically when you create an element or attribute. xsl:namespace is there to allow you to create additional namespace nodes, typically for namespaces used in QName-valued content. Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay > -----Original Message----- > From: Dimitre Novatchev [mailto:dnovatchev@xxxxxxxxx] > Sent: 12 March 2010 23:45 > To: David Carlisle > Cc: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: Is it possible to set the default > namespace with a dynamically-generated namespace uri? > > > <xsl:element name="foo" namespace="$x" > > > > is your friend > > > > david > > Yes, but this would require creating all the output with <xsl:element> > > The OP (in another forum) wants this default namespace to > apply to literal result elements that are descendents of this > top node. > However, they are just copied to the output 1:1 and the > serializer takes special care to express the fact that they > belong to no > namespace, by inserting " xmlns='' " on all of them. > > It seems to me that using <xsl:namespace> it is not possible > to specify a default namespace. > > I would be very glad if someone provides a concrete code > sample proving me wrong :) > > Cheers, > Dimitre > > > > > On Fri, Mar 12, 2010 at 11:26 AM, David Carlisle > <davidc@xxxxxxxxx> wrote: > > On 12/03/2010 19:15, Dimitre Novatchev wrote: > >>> http://www.w3.org/TR/xslt20/#element-namespace > >>> > >>> If the effective value of the name attribute is a zero-length > >>> string, a namespace node is added for the default namespace. > >>> > >>> > >>> so > >>> > >>> <foo> > >>> <xsl:namespace name="" select="$x"/> > >>> > >>> sets the default namespace to the uri in the variable x. > >>> > >>> David > >> > >> > >> > >> David, I tried this hours before asking the question. > >> > >> Saxon raises this error: > > > > er because I got it wrong, sorry, I should have checked or known or > > something. > > > > You can add namespace nodes using xsl:namespace but you > can't change > > the namespace of a node that's already been created so <foo> > > <xsl;namespace name="" > > > > > > doesn't work. > > > > > > <xsl:element name="foo" namespace="$x" > > > > is your friend > > > > david > > > > > > > > > > -- > Cheers, > Dimitre Novatchev > --------------------------------------- > Truly great madness cannot be achieved without significant > intelligence. > --------------------------------------- > To invent, you need a good imagination and a pile of junk > ------------------------------------- > Never fight an inanimate object > ------------------------------------- > You've achieved success in your field when you don't know > whether what you're doing is work or play > ------------------------------------- > I enjoy the massacre of ads. This sentence will slaughter ads > without a messy bloodbath.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|