[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Identity transformation (without using xsl:copy)

Subject: Re: Identity transformation (without using xsl:copy)
From: "Roger L. Costello" <costello@xxxxxxxxx>
Date: Sun, 31 Mar 2002 11:02:56 -0500
roger roger copy
A few weeks ago I posted a message (below) asking how to do an identity
transformation (without using <xsl:copy>) on instance documents that
contain namespace declarations.  The resounding response was "no way".
[Thanks for your input!]  Okay, after much testing and reading I have
convinced myself that you are correct - <xsl:copy> must be used.  It
seems to me that this puts some serious limits on XSLT.  Consider this
simple problem:  write a stylesheet which does an identity
transformation, but where all element (local) names are converted to
upper case.  For example:

If this is the start document:

<?xml version="1.0"?>
<j:juicers xmlns:j="http://www.juicers.org">
     <j:juicer id="omega">
         <name xmlns="http://www.names.org">
             Mighty Omega Juicer
         </name>
     </j:juicer>
</j:juicers>

Then this should be the result document:

<?xml version="1.0"?>
<j:JUICERS xmlns:j="http://www.juicers.org">
     <j:JUICER id="omega">
         <NAME xmlns="http://www.names.org">
             Mighty Omega Juicer
         </NAME>
     </j:JUICER>
</j:JUICERS>

If I could use <xsl:element> then I could easily accomplish this
transformation.  However, it escapes me how to do it if I am forced to
use <xsl:copy>.  

The more general question is: if I use <xsl:copy> to copy over an input
tree to an output tree how can I make modifications to elements names
(such as converting the local part to upper case, as shown above), and
modifications to each element's (non-namespace declaration) attributes? 
Thanks!  /Roger

"Roger L. Costello" wrote:
> 
> Does anyone have a stylesheet which does an identity transformation
> without using xsl:copy?  The below stylesheet works fine provided the
> instance document does not use namespaces, e.g., it does not copy over
> the namespace declarations, and it results in an error being generated
> when an element is encountered that is explicitly namespace-qualified.
> Could someone show me how to enhance this to deal properly with
> namespaces?  Thanks!  /Roger
> 
> identity.xsl
> 
> <?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="*">
>         <xsl:element name="{name(.)}">
>             <xsl:for-each select="@*">
>                 <xsl:attribute name="{name(.)}">
>                     <xsl:value-of select="."/>
>                 </xsl:attribute>
>             </xsl:for-each>
>             <xsl:apply-templates/>
>         </xsl:element>
>     </xsl:template>
> 
> </xsl:stylesheet>
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.