xsl-list
[Top] [All Lists]

RE: Namespaces II

2003-07-02 05:37:55

that stops _other_ namespace nodes being copied but as I said in my
forst reply, you don't want a copy at all as you need to change the name
of the element from p in urn:DTD930 to p in no namespace.

So you need to have a template that matches the former and generates the
latter.

Yes, it's good to be aware that node and namespace are not two separate things, 
they are forever joined and merely reference two different bits of a node's 
qName.

For example, if you have:

<my:test>

The real name (qName) of the node is the fully expanded name.  So if you have 
stated the 'my' prefix to be 'http://www.mydomain.com' the actual name of the 
node is:

<http://www.mydomain.com:test/>

*not* something like:

<test namespace="http://www.mydomain.com"/> 

You can use the namespace prefix to save your fingers, and to make the code 
readable, but ultimately it doesn’t separate the namespace from the node.  The 
namespace should unique, so its common to use url's, although you can use 
whatever you want.

So the thing to remember is: when you copy a node the namespace is an intrinsic 
part the node, and comes too.

If you want a node with the same name but in a different namespace, you have to 
create a new node using the local-name() of the original, give it a new 
namespace (if any), then copy through the contents of the original.  Something 
like:

  <xsl:element name="foo" namespace="someurl">
      <xsl:copy-of select="child::node()"/>
  </xsl:element>


cheers
andrew

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.491 / Virus Database: 290 - Release Date: 18/06/2003
 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>