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 |
|
Dimitre Novatchev dnovatchev@xxxxxxxxx - 24 Jun 2014 03:01:44 -0000 <=
|
|