Subject: RE: [xsl] calling templates From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Mon, 21 Jun 2004 12:51:29 +0100 |
> if u have an xml file like this: > <main> > <name> > <desc> > <link></link> > <section></section> > .........(the any number of section an dlink tags in any > order) </main> > > and u had a template match currently in main, how would u do an > <xsl:apply-templates /> on all the <link> and <section> tags > but not the > <name> and <desc> tags? > i thought about <xsl:apply-templates select="link" /> and then > <xsl:apply-templates select="section" /> but that would do it > in two groups, > i would like to apply the template sin the order they appear > in the xml > file...... > can anyone help > cheers > james walker If you want to process the elements in the order they appear in the document then you must use <xsl:apply-templates/> with no select attribute; this is known as 'push processing' as the elements in the document are driving the processing order. If you use <xsl:apply-templates select="..."/> then this is 'pull processing' as the stylesheet is driving the processing order which means elements could be processed out of document order. If you want to process certain children of your <main> element, but not others, and ensure document order is kept, then you will need to use <xsl:apply-templates/> within your <main> matching template, and add a 'no-op' template for <name> and <desc>: <xsl:template match="name|desc"/> You may need to be more specific in your match pattern if the elements appear in other structures in your source (as they are quite generic names): <xsl:template match="main/name|main/desc"/> cheers andrew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] calling templates, paul . bezault | Thread | Re: [xsl] Best namespace attribute , Max Romantschuk |
RE: [xsl] Best namespace attribute , Stephen Tredrea | Date | Re: [xsl] Best namespace attribute , Max Romantschuk |
Month |