xsl-list
[Top] [All Lists]

RE: Transferring xmlns aliases to result tree.

2003-06-07 10:06:27
When you use a literal result element, the element that is created in
the result tree should have namespace declarations for all the
namespaces that were in scope for the literal result element in the
stylesheet.

It's difficult to tell from your example, but perhaps you are declaring
the namespace "impl" in the source document and using the prefix "impl:"
in the stylesheet? That won't work. If it's used in the stylesheet it
must be declared in the stylesheet.

Michael Kay


-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Tom Rybak
Sent: 06 June 2003 17:39
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Transferring xmlns aliases to result tree.


Sure, here's the definition.

<wsdl:definitions targetNamespace="http://someurl/"; 
xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:impl="http://someurl/";>

So, the problem is that someType is defined within the WSDL 
document as

<complexType name="someType">
</complexType>

so it ends up being defined in targetNamespace, which is 
equivalent to the impl namespace. This type is later used by 
the line I gave before.

<element name="someElement" type="impl:someType"/>

and is referred to as impl:someType. What I meant when I said 
"appears as text" is that "impl" is only used withing the txt 
value of the type attribute. It's never explicitly used in 
the name of an element or the name of an attribute. Hence, it 
is never evaluated by the xslt engine, and the namespace 
alias is not copied into the result tree.

I have tried the following.

<xsl:for-each select="namespace::*">
      <xsl:copy/>
</xsl:for-each>

But, it does not work very well, since the attribute will be 
copied over as 'impl="http://someurl/";' and not as 
'xmlns:impl="http://someurl/";'.

-----Original Message-----
From: Lars Huttar [mailto:lars_huttar(_at_)sil(_dot_)org]
Sent: Friday, June 06, 2003 12:40 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Transferring xmlns aliases to result tree.


I am having trouble transferring the xml namespace aliases
from a source tree to the result tree. Specifically I would 
like to transfer some aliases that are used only within the 
value of an attribute.

<element name="someElement" type="impl:someType"/>

I have a mapping at the top of the document for impl, but
it's not used anywhere else except the type attribute. Is 
there a way to force this mapping to appear in the result 
tree? It does not seem to be transferred. I assume it's 
because it appears as text.

What do you mean, it appears as text?

Can you show us your declaration of the "impl" prefix
at the top of the document?

Lars


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


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



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