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

RE: Converting an xml to another xml Using XSLT

Subject: RE: Converting an xml to another xml Using XSLT
From: "Tedla, Sridhar \(LNG-CSP\)" <Sridhar.Tedla@xxxxxxxxxxxxxx>
Date: Tue, 2 May 2006 13:38:07 -0600
tedla ltd
>I'm finding myself confused as to why you're doing all of this...it
would seem you could simply do:

<xsl:template match="class">
<hier>
<xsl:apply-templates />
</hier>
</xsl:template>

<xsl:template match="classitem">
<hierlev>
<heading>
   <title><xsl:value-of select="name" /></title> </heading>
<xsl:apply-templates /> </hierlev> </xsl:template>

>One of the strengths of XSLT is how it will travel down the length of
the entire tree.

>Is the problem more complicated than this?  (Perhaps it is, I don't
have time to flip back a couple of of threads to find >out)

I need suggestion or solution how to handle arbitary depth i.e. if
"classitem" depth is 5 or 8 or some other value.




-----Original Message-----
From: Jon Gorman [mailto:jonathan.gorman@xxxxxxxxx]
Sent: Tuesday, May 02, 2006 12:52 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  Converting an xml to another xml Using XSLT

On 5/2/06, Tedla, Sridhar (LNG-CSP) <Sridhar.Tedla@xxxxxxxxxxxxxx>
wrote:
> Question: Converting an XML markup to another XML Markup Using XSLT.
>
> Sample XML Markup:
> <class >
>    <classitem>
>      <identifier>
>         <name>Sales </name>
>                <code>1234</code>
>      </identifier>
>      <classitem>
>         <identifier>
>           <name> Tax</name>
>           <code>5678</code>
>        </identifier>
>      </classitem>
>     </classitem>
> </class>
>
> After XSL Transformation, the output markup should be as follows:
>   <hier>
>           <hierlev >
>              <heading>
>                 <title>Sales</title>
>              </heading>
>              <hierlev>
>                 <heading>
>                     <title> Tax</title>
>                 </heading>
>                </hierlev>
>             </hierlev>
>     </hier>
>
> The mapping between Input and output markup elements as follows:
>
> class  -     hier
> Classitem - heirlev
> identifier -  heading
> name       - title
> code has no mapping i.e. the element can be ignored in XSLT Code
>
> I have written XSLT code which works for fixed depth of class.Actually

> I have written XSLT code for classItem depth of 4, but for
simplicity...
> the following code is for classItem depth of 2 only.
> <xsl:template match="class">
>         <xsl:param name="count"/>
>         <xsl:param name="v1" select="descendant::name[1]/text()"/>
>         <xsl:param name="v2" select="descendant::name[2]/text()"/>
>         <xsl:call-template name="createHierLevElement">
>           <xsl:with-param name="hierLevContent">
>                <xsl:element name="heading">
>                   <xsl:element name="title">
>                       <xsl:copy-of select="$v1"/>
>                    </xsl:element>
>                 </xsl:element>
>
>                 <xsl:if test=" $count = 2 ">
>                   <xsl:call-template name="createHierLevElement">
>                       <xsl:with-param name="hierLevContent">
>                           <xsl:element name="heading">
>                              <xsl:element name="title">
>                                   <xsl:copy-of select="$v2"/>
>                              </xsl:element>
>                           </xsl:element>
>                        </xsl:with-param>
>                    </xsl:call-template>
>                 </xsl:if>
>              </xsl:with-param>
>         </xsl:call-template>
>   </xsl:template>
>
>
>   <xsl:template name="createHierLevElement">
>       <xsl:param name="hierLevContent" />
>
>         <xsl:element name="hierlev">
>            <xsl:copy-of select="$hierLevContent" />
>         </xsl:element>
>     </xsl:template>
>

This doesn't quite look like the other examples you've already posted.
 (Also, try to stick with the same thread, it can get confusing for some
of us if you jump around)>

I'm finding myself confused as to why you're doing all of this...it
would seem you could simply do:

<xsl:template match="class">
<hier>
<xsl:apply-templates />
</hier>
</xsl:template>

<xsl:template match="classitem">
<hierlev>
<heading>
   <title><xsl:value-of select="name" /></title> </heading>
<xsl:apply-templates /> </hierlev> </xsl:template>

One of the strengths of XSLT is how it will travel down the length of
the entire tree.

Is the problem more complicated than this?  (Perhaps it is, I don't have
time to flip back a couple of of threads to find out)

Jon Gorman

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.