Subject: Re: [xsl] node() function From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 24 Jun 2014 03:01:44 -0000 |
There is an XSLT training course at Pluralsight, watching which should help you find the correct answers to these questions: http://www.pluralsight.com/training/Courses/TableOfContents/xslt-foundations- part1 On Mon, Jun 23, 2014 at 1:17 PM, Mailing Lists Mail daktapaal@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Need to know the behavior of the node() functionb& This mail contains > two parts. Part 2 is kind of a corollary of part 1. > > > I have the following XML > > <Comp> > > <a>Universal</a> > > <b>HSBC</b> > > <c>Disney </c> > > <d>Barclays</d> > > </Comp> > > > > PART1 > > > > I wanted to test some stylesheet behaviors .. I used three stylesheets : > > > > Stylesheet 1 > > > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format"xmlns:xs="http://www.w3.org/2001/ XMLSchema" > xmlns:fn="http://www.w3.org/2005/xpath-functions"> > > <xsl:template match="node()|@*"> > > <xsl:apply-templates/> > > </xsl:template> > > </xsl:stylesheet> > > > > > > Stylesheet 2 > > > > > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format"xmlns:xs="http://www.w3.org/2001/ XMLSchema" > xmlns:fn="http://www.w3.org/2005/xpath-functions"> > > <xsl:template match="*"> > > <xsl:apply-templates/> > > </xsl:template> > > </xsl:stylesheet> > > > > > > Stylesheet 3 > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format"xmlns:xs="http://www.w3.org/2001/ XMLSchema" > xmlns:fn="http://www.w3.org/2005/xpath-functions"> > > <xsl:template match="/"> > > <xsl:apply-templates/> > > </xsl:template> > > </xsl:stylesheet> > > I was expecting all the three stylesheets to copy the text nodes to the target. > > While the stylesheet2 and stylesheet 3 did that, the stylesheet 1 did > not output anything ( wondered why?? ).. > > What I was thinking the stylesheet1 will do is : > > > > 1. Match any node() or the attribute node . > > 2. Apply template to the children and self > > 3. Default template rule will kick in as I havenbt mentioned > any node. This will : > > a. Do value-of select for text nodes > > b. Do apply-templates for the element nodes ( * ) > > > > With that, I was expecting > > Universal > > HSBC > > Disney > > Barclays > > > > This is what the Stylesheet 2 and Stylesheet 3 produces > > > > SO the answer was in the fact that node() does not match text()?? > > So I added > > > > > > <xsl:template match="text()"> > > <xsl:value-of select="."/> > > </xsl:template> > > > > This came with what I wanted.. ( both happy and disappointed ) > > Happy as it brought me to a logical end, and disappointed as it dint > work like I initially thought it would. > > > > STOPPING HERE : Needed some insights into what I just wrote before > going furtherb& > > > > > > PART2 > > > > Further, This leads me to a (dangerous) way of saying : Select only > node c and nothing else. > > > > I could do : > > > > 1. The normal intuitive way ( Approach A) > > > > <xsl:template match="/"> > > <xsl:apply-templates select = bcb/> > > </xsl:template> > > <xsl:template match="c"> > > <xsl:value-of select="."/> > > </xsl:template> > > > > 2. The somewhat dangerous way (based on the observation in PART1 > ) ( Approach B ) > > > > <xsl:template match="node()|@*"> > > <xsl:apply-templates/> > > </xsl:template> > > <xsl:template match="c"> > > <result> > > <xsl:value-of select="."/> > > </result> > > </xsl:template> > > > > <!bOther nodes will not be cared for or other nodes does nothing (but why??) > > I would have thought, the other nodes will be matched, and text nodes > be printed, but did not, as in PART1. (= reasons for calling Part 2 > as corollary to part 1) > > C > > > > > > Approach B is not intuitive for me. But somehow doing the same thing > as approach A. Although I will NEVER use the approach B. > > > > Any Idea why this is so.. are there situations where approach B wont > work? I want to think approach B is Wrong and will fail some how.. > > > > > > Dak/ > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] node() function, Wendell Piez wapiez@ | Thread | [xsl] Getting epub: namespace into , Peter West lists@xxx |
Re: [xsl] node() function, Mailing Lists Mail d | Date | Re: [xsl] node() function, Dimitre Novatchev dn |
Month |