Subject: Re: [xsl] XSLT Concepts From: chirag matkar <chiragmatkarbioinfo@xxxxxxxxx> Date: Fri, 1 Oct 2010 21:06:17 +0700 |
Thank You all for your invaluable Comments, Especially Michael. On Fri, Oct 1, 2010 at 8:37 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote: > On 01/10/2010 1:50 PM, chirag matkar wrote: >> >> Hello Friends, >> I am an Amateur Developer in Xsl transformations. >> I work on Research Article XML conversions. >> I just want to be clear on some Concepts of XSLT. > > Welcome. > >> 1)When we apply a Template<xsl:apply-templates/> the whole text within >> the tags in input file data gets applied and new element are >> processed as we declare them. > > xsl:apply-templates, in the absence of a select attribute, selects the > immediate children of the context node, and for each one, it finds the best > matching template rule, and applies that rule. If there's no explicit rule > for a node in the stylesheet, it will apply the built-in rule (this often > happens for text nodes, where the built-in rule copies the text unchanged to > the output). > > Note I'm using the terminology of trees and nodes, rather than tags and > input files. If you want to understand XSLT concepts, you need to learn to > think of the input XML as a tree (the tree that comes out of the XML > parser), not the lexical angle-bracket stuff that went into the parser. > > An individual call on xsl:apply-templates only causes the children to be > processed, not all the descendants. However, the default action for the > children is to recurse downwards to their own children, so the default > processing does a complete tree walk. >> >> So when we use<xsl:value of select=""/> ,additional data is >> processed.This results into extra junk data as i have noticed.How to >> avoid such circumstances.? > > You should (usually!) process text nodes using ether xsl:apply-templates or > xsl:value-of, but not both. > >> 2)Also Suppose we tag the input data with new elements,the tags appear >> in the sequence of initial text in the data.How can we sequentially >> keep changing order of the data as we wish and apply templates >> accordingly. >> Example - we need to tag article title which appears at end in the >> input file but we wish to have it tagged first in the output file.ie >> change order of tags according to our requirements. > > This is where the select attribute of xsl:apply-templates comes in. Normally > the children are processed in (input) document order. If you want a > different order, or if you want to process the children selectively, you can > do: > > <xsl:apply-templates select="author, abstract, citations, body"/> > > (That's XSLT 2.0 syntax: in 1.0 you need four sucessive calls on > xsl:apply-templates, each to process one kind of child element). >> >> 3)Can we template match a tag more than one time and process nodes >> within it sequentially? >> >> > Yes. If you want different processing on different occasions, use modes. The > usual example is a table of contents: > > <xsl:apply-templates select="*" mode="table-of-contents"/> > <xsl:apply-templates select="*" mode="article-body"/> > > The xsl:template rule itself has a mode attribute, and the template will > only be activated if its mode matches the requested mode. > > Michael Kay > Saxonica > > -- Regards, Chirag Matkar
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT Concepts, Michael Kay | Thread | [xsl] Mapping from two sources, sudheshna iyer |
Re: [xsl] XSLT Concepts, Michael Kay | Date | [xsl] Mapping from two sources, sudheshna iyer |
Month |