xsl-list
[Top] [All Lists]

Re: [xsl] @xmlns retrieving value of

2006-09-20 11:52:54
Thanks George for the reply back but after looking at your code it wasn't
exactly what I required. So I played with it for awhile and here is the solution
I came by

<xsl:variable name="l_CurrentNameSpace" select="namespace::*[name() !=
'xml'][name() != 'props'][last()]" />


this way I can manipulate the namespace itself and get the prefix and uri
without much hassle and test if the var is not empty and output in the result 
doc.

Thanks for your input without it I would not have been able to find this 
solution.

Mario Madunic

Quoting George Cristian Bina <george(_at_)oxygenxml(_dot_)com>:

Hi Mario,

Than just test if the namespace is present and create the element in 
that namespace, if it is present, and in no namespace otherwise:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="2.0">
     <xsl:template match="root">
         <newDoc>
             <xsl:apply-templates/>
         </newDoc>
     </xsl:template>
     <xsl:template match="p">
         <xsl:variable name="pns" select="namespace-uri()"/>
         <xsl:choose>
             <xsl:when test="namespace::*[name()!=$pns and 
name()!='xml'][1]">
                 <xsl:element name="{name(namespace::*[name()!=$pns and 
name()!='xml'][1])}:para"
                     namespace="{namespace::*[name()!=$pns and 
name()!='xml'][1]}">this is a test to retrieve the
                     namespace uris and name.</xsl:element>
             </xsl:when>
             <xsl:otherwise>
                 <para>this is a test to retrieve the namespace uris and 
name.</para>
             </xsl:otherwise>
         </xsl:choose>

     </xsl:template>
</xsl:stylesheet>


Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

Mario Madunic wrote:
Thanks George for your solution. This isn't exactly what I was looking for
but
that is my fault.

Should have mentioned that I would like to test for the existence of @xmlns
and
output the namespace only then. So I can get output like the following

<anElem:para xmlns:anElem="http://www.namespace.com/namespaces/anElem";>this
is a
test to retrieve the namespace uri and name.</anElem:para>

or if ther is no @xmlns

<para>this is a test to retrieve the namespace uri and name.</para>

from

<root>
 ...
 <p xmlns:anElem="http://www.namespace.com/namespaces/anElem";>this is a
test to
retrieve the namespace uri and name.</p>

 <p>this is a test to retrieve the namespace uri and name.</p>
...
</root>

Sorry about that.

Mario


Quoting George Cristian Bina <george(_at_)oxygenxml(_dot_)com>:

Hi Mario,

The document you want as output has the para element with an undeclared 
namespace as the anElem prefix is not bound. Probably what you want is

<anElem:para 
xmlns:anElem="http://www.namespace.com/namespaces/anElem";>this is a test
         to retrieve the namespace uri and name.</anElem:para>
?

In that case you can use something like:
<?xml version="1.0" encoding="utf-8"?>
<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform";
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0">
   <x:template match="root">
     <newDoc>
       <xsl:apply-templates/>
     </newDoc>
   </x:template>
   <xsl:template match="p">
     <xsl:variable name="pns" select="namespace-uri()"/>
     <xsl:for-each select="namespace::*[name()!=$pns and
name()!='xml'][1]">
       <xsl:element name="{name()}:para" namespace="{.}">this is a test 
to retrieve the namespace uris
         and name.</xsl:element>
     </xsl:for-each>
   </xsl:template>
</x:stylesheet>

to get

<?xml version="1.0" encoding="UTF-8"?><newDoc>
     ...
     <anElem:para 
xmlns:anElem="http://www.namespace.com/namespaces/anElem";>this is a test 
to retrieve the namespace uris
         and name.</anElem:para>
     ...
</newDoc>

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Mario Madunic wrote:
Hi I'm hoping somebody might have some insight.

Saxon 8
XSLT 2

Here is a sample piece of xml to help get the idea of what I'm trying to
achieve.
<root>
...
     <p xmlns:anElem="http://www.namespace.com/namespaces/anElem";>this is
a
test
to retrieve the namespace uri and name.</p>
...
</root>

I've been trying to get the namespace and uri from the @xmlns with no
success. I
would like to reuse both the ns and uri when I transform the p into
something like
<newDoc>
...
<anElem:para xmlns="http://www.namespace.com/namespaces/anElem";>this is
a
test
to retrieve the namespace uri and name.</anElem:para>
...
</newDoc>

I've used

namespace-uri()
name()
namespace-uri-for-prefix()
namespace-uri-from-QName()

I'm pretty sure the last 2 were being used inappropriately

Any ideas or solution would be appreciated.

Thanks

Marijan Madunic


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


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