xsl-list
[Top] [All Lists]

RE: Problems with outputing namespaces

2005-12-11 09:47:51
You're creating the element with:

   <xsl:element name="policy"
namespace="http://www.foo.net/cml/NetworkProtector/fwm";>

The XSLT 1.0 specification says:

"XSLT processors may make use of the prefix of the QName specified in the
name attribute when selecting the prefix used for outputting the created
element as XML; however, they are not required to do so."

It looks as if you're out of luck: you've chosen an XSLT processor that (at
least in this situation) ignores the [absence of a] prefix in the name
attribute.

Many XSLT 1.0 processors do make use of the prefix (or its absence), and
XSLT 2.0 mandates that they should do so unless there's a conflict with
another use of the same prefix:

"The prefix of the lexical QName specified in the name attribute (or the
absence of a prefix) is copied to the prefix part of the expanded-QName
representing the name of the new element node. In the event of a conflict
this prefix (or absence of a prefix) may subsequently be changed during the
namespace fixup process (see 5.7.3 Namespace Fixup)."

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

 

-----Original Message-----
From: Charlie Consumer [mailto:faceless1976(_at_)yahoo(_dot_)com] 
Sent: 09 December 2005 16:53
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Problems with outputing namespaces

Hi,

I'm doing a XML to XML transformation with a
stylesheet.  The problem I'm having it that the xmlns
attribute is being outputted differently than it came
in.  So before it looks like:

<policy
xmlns="http://www.foo.net/cml/NetworkProtector/fwm";
... >

after it looks like:

<fwm:policy
xmlns:fwm="http://www.foo.net/cml/NetworkProtector/fwm";
...>

I'm using the JDK 1.5 JAXP 1.3 which is XSLTC as my
stylesheet library.  Previous I had been using XALAN. 
Here is the first portion of my stylesheet:

<xsl:stylesheet version="1.0"
xmlns:npcommon="http://www.foo.net/cml/NetworkProtector/common";
xmlns:fwm="http://www.foo.net/cml/NetworkProtector/fwm";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; >
   <xsl:output encoding="UTF-8" indent="yes"
method="xml"/>

   <xsl:template match="fwm:policy">
   <xsl:variable name="nodesToMesh"
select="$localMesh/member[not(@component=$localComponent)
and not(@removed)]"/>
   
   <xsl:element name="policy"
namespace="http://www.foo.net/cml/NetworkProtector/fwm";>
     <xsl:copy-of select="@*"/>
     <xsl:apply-templates mode="access"
select="$nodesToMesh"/>
     <xsl:apply-templates select="fwm:Policy"/>
     <xsl:apply-templates mode="ipsec"
select="$nodesToMesh"/>
     <xsl:apply-templates select="fwm:IPSECRules"/>
     <xsl:apply-templates select="fwm:CommonLists"/>
     <xsl:apply-templates
select="fwm:SecurityGateways"/>
     <xsl:apply-templates select="fwm:MessageConfig"/>
     <xsl:apply-templates
select="fwm:ProxyRedirectRule"/>
     <xsl:apply-templates
select="fwm:VpnAdvancedSettings"/>
     <xsl:apply-templates select="fwm:TuningSetting"/>
   </xsl:element>
</xsl:template> 

What I'm trying to accomplish is just no prefixes with
fwm: and my xmlns attribute to carry no xmlns:fwm, but
instead be just xmlns.  Why is this not working?

Thanks
Charlie


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.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>