xsl-list
[Top] [All Lists]

Re(2): [xsl] adding namespaces to result [XSLT 1.0]

2006-11-10 00:39:35
Hi, thanks for the reply. This is the code:

-----XSL------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xbrli="http://www.xbrl.org/2003/instance";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; >
  <xsl:template match="/">
       <xsl:element name="namespaces">
              <xsl:variable name="ns" select="/xbrli:xbrl/namespace::*"/>
              <xsl:copy-of select="$ns"/>
       </xsl:element>
  </xsl:template>
</xsl:stylesheet>
--------------------------


-------XML------
<?xml version="1.0" encoding="UTF-8"?>
<xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance";
xmlns:link="http://www.xbrl.org/2003/linkbase"; xmlns:xlink="http://www.w3.
org/1999/xlink"  xmlns:iso4217="http://www.xbrl.org/2003/iso4217";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
</xbrli:xbrl>
-------------------------


-------OUTPUT when I apply XSL to XML------
<?xml version="1.0" encoding="UTF-8"?>
<namespaces iso4217="http://www.xbrl.org/2003/iso4217"; link="http://www.xbrl.
org/2003/linkbase" xbrli="http://www.xbrl.org/2003/instance"; xlink="http://www.
w3.org/1999/xlink" xml="http://www.w3.org/XML/1998/namespace"; xsi="http://www.
w3.org/2001/XMLSchema-instance"/>
----------------------------------------


It writes the namespaces in the output but the problem is that these namespaces
dont have  xmlns: before the namespace prefix. I want these namespaces exactly
the same as in the XML.

Thank you




Michael Kay  (08/11/2006  19:02):

If the element name, the namespace prefix, and the namespace URI are all
known to you at the time you write the stylesheet, then all you need to do
is to use a literal result element:

<myElement xmlns:iso4217="http://www.xbrl.org/2003/iso4217";>
 ....
</myElement>

If any of these are not known in advance, then you have to use the technique
you refer to, of copying a namespace node from another document. You've
clearly misunderstood how this technique works, but it would be useful to
see your code so that we can see which part of it you didn't understand.

Michael Kay
http://www.saxonica.com/



Im trying to create a XML document from another using XSLT.
The problem comes when I try to add a namespace to the result
(e.g. xmlns:iso4217="http://www.
xbrl.org/2003/iso4217"). I have read in post http://www.stylusstudio.
com/xsllist/200504/post00350.html that it is not possible to
add a namespace with a xsl:attribute, so I tried to use
xsl:copy-of with the axe "namespace".
This doesnt work fine since it does not add "xmlns:" to the
namespace and if I try to add "xmlns:" by hand it does not
work because it stops from being an attribute. What can I do?

Thanks in advance


--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--

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