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

RE: Traverse XML Source

Subject: RE: Traverse XML Source
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Wed, 18 Aug 2004 00:40:08 -0700 (PDT)
xsl source
Hi Karl,
This example defines a template(<xsl:template
match="node()">) which will execute when any element
node is incountered. The template does
<xsl:apply-templates /> , which recursively applies
the template rules to the child nodes of context
node..

Regards,
Mukul

--- "Karl J. Stubsjoen" <karl@xxxxxxxxxxxxxxxxxxxx>
wrote:

> Is this an example of a Recursive node match; we
> continue to apply-templates
> until we get to the end of our source?
> Karl
> 
> 
> -----Original Message-----
> From: Mukul Gandhi [mailto:mukul_gandhi@xxxxxxxxx]
> Sent: Tuesday, August 17, 2004 10:00 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE:  Traverse XML Source
> 
> 
> Sorry, the previous XSL has some error. Please use -
> 
> <?xml version="1.0"?>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
> 
> <xsl:output method="xml" indent="yes" />
> <xsl:strip-space elements="*" />
> 
> <xsl:template match="node()">
>    <xsl:if test="count(child::*) > 0">
>      <ul>
>        <xsl:value-of select="name()" />
>        <xsl:apply-templates />
>      </ul>
>    </xsl:if>
>    <xsl:if test="count(child::*) = 0">
>      <li>
>        <xsl:value-of select="name()" />
>        <xsl:apply-templates />
>      </li>
>    </xsl:if>
> </xsl:template>
> 
> </xsl:stylesheet>
> 
> Regards,
> Mukul
> 
> --- Mukul Gandhi <mukul_gandhi@xxxxxxxxx> wrote:
> 
> > Hi Karl,
> >   Please try this XSL -
> >
> > <?xml version="1.0"?>
> > <xsl:stylesheet
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > version="1.0">
> >
> > <xsl:output method="xml" indent="yes" />
> > <xsl:strip-space elements="*" />
> >
> > <xsl:template match="node()">
> >    <xsl:for-each select="@*">
> >      <xsl:attribute name="{name()}">
> >        <xsl:value-of select="." />
> >      </xsl:attribute>
> >    </xsl:for-each>
> >    <xsl:if test="count(child::*) > 0">
> >      <ul>
> >        <xsl:value-of select="name()" />
> >        <xsl:apply-templates />
> >      </ul>
> >    </xsl:if>
> >    <xsl:if test="count(child::*) = 0">
> >      <li>
> >        <xsl:value-of select="name()" />
> >        <xsl:apply-templates />
> >      </li>
> >    </xsl:if>
> > </xsl:template>
> >
> > </xsl:stylesheet>
> >
> > Regards,
> > Mukul
> >
> > --- "Karl J. Stubsjoen"
> <karl@xxxxxxxxxxxxxxxxxxxx>
> > wrote:
> >
> > > That is a farely predicted result... I don't
> know
> > to
> > > what depth the child
> > > nodes shall occur... but each parent node should
> > be
> > > a <ul> and each child
> > > node with child nodes should be a <UL>... with
> the
> > > possibility of there
> > > being sibling <li>'s.
> > > Here is a better XML source:
> > >
> > > <ABC>
> > >   <A>
> > >     <AB/><CD/><EF/>
> > >   </A>
> > >   <B>
> > >     <AB/><CD/><EF/>
> > >   </B>
> > >   <C/>
> > >   <D/>
> > >   <E/>
> > > </ABC>
> > >
> > > And the result:
> > > <ul>ABC
> > >   <ul>A
> > >     <li>AB</li>
> > >     <li>CD</li>
> > >     <li>EF</li>
> > >   </ul>
> > >   <ul>B
> > >     <li>AB</li>
> > >     <li>CD</li>
> > >     <li>EF</li>
> > >   </ul>
> > >   <li>C</li>
> > >   <li>D</li>
> > >   <li>E</li>
> > >   <li>F</li>
> > > </ul>
> > >
> > >
> > > -----Original Message-----
> > > From: cking [mailto:cking@xxxxxxxxxx]
> > > Sent: Tuesday, August 17, 2004 2:24 PM
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: Re:  Traverse XML Source
> > >
> > >
> > > Hi Karl,
> > >
> > > there are a few problems with your XSL source:
> > > it contains two templates with the same match
> > > attribute
> > >   <xsl:template match="*">
> > > which basically means: match any element.
> > > Template match attributes should be unique,
> > > otherwise the
> > > processor does not know which of the two
> templates
> > > to use.
> > >
> > > further, your second template has no effect,
> > because
> > > match="@*"
> > > means: match any attribute, and your XML source
> > tree
> > > doesn't
> > > have any element with attributes.
> > >
> > > you didn't show us the output you expect, but
> > > something like:
> > >
> > > <xsl:template match="/stuff/abc/def">
> > >   <ul><xsl:apply-templates/></ul>
> > > </xsl:template>
> > >
> > > <xsl:template match="path | web | uid | pwd">
> > >   <li><xsl:value-of select="."/></li>
> > > </xsl:template>
> > >
> > > will (hopefully) give you this output:
> > >
> > > <ul>
> > >   <li>\\path-to-server</li>
> > >   <li>http://my-web-path</li>
> > >   <li>9999</li>
> > >   <li>monkeysee</li>
> > > </ul>
> > >
> > > HTH,
> > > Anton Triest
> > >
> > > Tuesday, August 17, 2004 10:46 PM,
> > > karl@xxxxxxxxxxxxxxxxxxxx wrote:
> > > >
> > > > Hello,
> > > > I would like a very simple XSLT transformation
> > > that traverses an XML
> > > > source and creates an HTML list output.  Is
> this
> > > an identity
> > > > transformation?
> > > > So far, I have only been able to get anything
> to
> > > happen on the document
> > > > root, and nothing below is traversed.
> > > > Thanks for the help.  ~karl
> > > >
> > > > Here is what I have so far,
> > > > XML Source:
> > > > <stuff>
> > > > <abc>
> > > > <def>
> > > > <path>\\path-to-server</path>
> > > > <web>http://my-web-path</web>
> > > > <uid>9999</uid>
> > > > <pwd>monkeysee</pwd>
> > > > </def>
> > > > </abc>
> > > > </stuff>
> > > >
> > > > XSL Source:
> > > > <xsl:template match="*">
> > > >   <xsl:copy>
> > > >     <xsl:apply-templates select="@*" />
> > > >     <xsl:apply-templates />
> > > >   </xsl:copy>
> > > > </xsl:template>
> > > >
> > > >
> > > > <xsl:template match="@*">
> > > >   <li><xsl:copy-of select="." /></li>
> > > > </xsl:template>
> > > >
> > > > <xsl:template match="*">
> > > >   <li><xsl:copy-of select="." /></li>
> > > > </xsl:template>
> > > >
> > > > </xsl:stylesheet>



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

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.