Subject: RE: [xsl] Traverse XML Source From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Wed, 18 Aug 2004 00:40:08 -0700 (PDT) |
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: [xsl] 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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Traverse XML Source, Karl J. Stubsjoen | Thread | Tov: Re: [xsl] Page Numbering, Dinnyés Álmos |
Tov: Re: [xsl] Page Numbering, Dinnyés Álmos | Date | RE: [xsl] Retrieving the date of pr, David . Pawson |
Month |