RE: [xsl] copy-of "canonicalization" behavior in Xalan (Java)

Subject: RE: [xsl] copy-of "canonicalization" behavior in Xalan (Java)
From: "Ganesh Babu Nallamothu, Integra-India" <ganeshbabu.nallamothu@xxxxxxxxxxxxxxxxx>
Date: Sat, 24 Jul 2004 09:38:28 +0530
Dear All,

As of now Xalan 2.6.0 is supporting only XSLT 1.0, When it will start
supporting XSLT 2.0? Any idea?

Ganesh

-----Original Message-----
From: Mukul Gandhi [mailto:mukul_gandhi@xxxxxxxxx]
Sent: Friday, July 23, 2004 9:14 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] copy-of "canonicalization" behavior in Xalan (Java)


Thank you Mike for the explanation...

Regards,
Mukul

--- Michael Kay <mhk@xxxxxxxxx> wrote:
> Attributes and namespaces are quite different things
> in the data model, and
> it's expressly stated in the language spec that you
> can't create namespaces
> by trying to create an attribute with an "xmlns:"
> name.
>
> XSLT 2.0 has an xsl:namespace instruction that
> allows dynamic construction
> of namespace nodes.
>
> Michael Kay
>
> > -----Original Message-----
> > From: Mukul Gandhi [mailto:mukul_gandhi@xxxxxxxxx]
>
> > Sent: 23 July 2004 13:37
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Re: [xsl] copy-of "canonicalization"
> behavior in Xalan (Java)
> >
> > I wrote this stylesheet
> >
> > <?xml version="1.0"?>
> > <xsl:stylesheet
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > version="1.0">
> >
> > <xsl:output method="xml" />
> >
> > <xsl:template match="node()">
> >    <xsl:copy>
> >      <xsl:attribute
> > name="xmlns:{substring-before(name(),':')}">
> >        <xsl:value-of select="namespace-uri()" />
> >      </xsl:attribute>
> >      <xsl:for-each select="@*">
> >        <xsl:attribute name="{name()}">
> >          <xsl:value-of select="." />
> >        </xsl:attribute>
> >      </xsl:for-each>
> >      <xsl:apply-templates />
> >    </xsl:copy>
> > </xsl:template>
> >
> > </xsl:stylesheet>
> >
> > When it is applied to the given XML, Xalan
> produces
> > error
> > "Could not resolve namespace prefix: xmlns. The
> node
> > will be ignored."
> >
> > My questions are
> > 1) Is it possible to generate attribute names like
> > xmlns:something (i.e. how to escape special
> meaning of
> > xmlns: in XSLT for namespaces)
> > 2) If this is possible, then is it architecturally
> > correct?
> >
> > Regards,
> > Muku
> >
> > --- Matthew McKennirey
> <mmckennirey@xxxxxxxxxxxxxx>
> > wrote:
> > > The copy-of element when processed by Xalan
> (Java)
> > > appears to canonicalize the output, rather than
> > > output the source tree exactly.
> > >
> > > For specific nodes in the source tree I would
> like
> > > to create an identical copy in the result tree,
> > > including redundant namespace
> > > declarations.
> > >
> > > Assume a source document like:
> > >
> > > <foo:root xmlns:foo="http://abc.org/foo#";
> > > xmlns:xyz="http://xyzinc.com/xyz#";>
> > > 	<foo:parent xmlns:foo="http://abc.org/foo#";>
> > > 		<foo:child
> xmlns:foo="http://abc.org/foo#";>more
> > > text</foo:child>
> > > 		<xyz:child
> xmlns:xyz="http://xyzinc.com/xyz#";>yet
> > > more text</xyz:child>
> > > 	</xyz:parent>
> > > </foo:root>
> > >
> > > The namespace declarations on the parent and
> child
> > > nodes are redundant (their namespace prefixes
> have
> > > been bound to a namespace on
> > > the root node).
> > >
> > > When I use copy-of, such as in the simple
> template
> > > below, in XML Spy using its built in XSLT
> processor
> > > the result tree is an exact
> > > and complete copy of the source tree, redundant
> > > namespace declarations and all, as I would
> expect.
> > >
> > > <xsl:template match ="/">
> > >   <xsl:copy-of select="(.)"/>
> > > </xsl:template>
> > >
> > > (I have simplified the template in the extreme
> to
> > > make it clear.)
> > >
> > > When I run the same template with the Xalan
> (Java)
> > > XSLT processor, which uses a SAX parser, I get a
> > > "cleaned", canonical form of the
> > > source tree as my result, with all redundant
> > > namespace declarations removed.
> > >
> > > This may appear to be a benefit, but I later
> > > manipulate parts of the result tree (which is
> much
> > > more complex than the simple
> > > example) as separate XML fragments and at that
> point
> > > the namespace declarations are in fact no longer
> > > redundant but critical.
> > >
> > > I have not been able to find anything in the
> Xalan
> > > documentation which suggests a way to avoid this
> > > canonicalization - perhaps its a
> > > SAX issue? Is there a way to force Xalan to make
> an
> > > exact copy of the source tree, warts and all?
> > >
> > >
> > > Thanks





__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail

Current Thread