On 01/10/2010 13:50, 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.
the first concept that you need to be clear on is that XSLt never
processors tags (neither on input nor output) the tags that (may) appear
in an impyt file are processed by an XML parser which produces a tree of
nodes (actually it may produce a stream of events made into a tree later
but that's an implementation detail)
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.
No (conceptually, and usually in practice) the entire input document has
been parsed into an in memory node tree before the transformation starts.
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.?
xsl:value-of produces a text node with the string value of the nodes
that are selected. if you consider that to be junk then presumably you
are not selecting the nodes that you want to select, but since you give
no information it is impossible to give any advice.
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.
lots of ways, please read the posting guidelines for this list, which
suggests ways to make it easier for people to help. Specifically
providing small runnable examples.
One way, if you have added <foo>....</foo> at the end of your output
file, then
in the template for the parent of foo, use
<xsl:apply-templates select="* except foo"/>
so foo is not processed at that point.
and in the template where you want foo to appear at the start of your
document do
<xsl:apply-templates select="//foo"/>
as noted in the reply to your first question, the entire input document
is made into a tree in advance so every template has read access to the
entire document.
3)Can we template match a tag more than one time and process nodes
within it sequentially?
You can never match tags at all, the XSLT processor has no information
about the tagging used in the document, it can not tell if you used <p/>
(one tag) or <p></p> (two tags). You can apply templates to element
nodes as often as you want, either with the same mode (if you want the
same processing each time) or different modes 9if you want different
processing.
Thanking You.
David
________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________