Subject: RE: [xsl] Problems with outputing namespaces From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sun, 11 Dec 2005 16:47:51 -0000 |
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@xxxxxxxxx] > Sent: 09 December 2005 16:53 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Problems with outputing n, drkm | Thread | [xsl] Preserving whitespace between, matt |
RE: [xsl] Re: Default namespace in , Michael Kay | Date | [xsl] xsl split string, Philippe LAPLANCHE |
Month |