[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: node() function

Subject: Re: node() function
From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 24 Jun 2014 03:01:44 -0000
Re:  node() function
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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.