[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Re: Re: weird behavior with last()
Subject: [xsl] Re: Re: weird behavior with last() From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Tue, 24 Jul 2001 12:25:27 -0700 (PDT) |
Thomas B. Passin wrote: > I got a different result after I copied your code by cut-and-paste. > > With Saxon, I always got the trailing "|", with msxml3 I never got it, > whether or not I put the </MainMenu> onthe same line as </MainMenuItem> or > not. > > Here, I am using Instant Saxon 6.2.2 running in XML Cooktop. > > Sounds like it's time for Mike Kay... It's quite clear: <xsl:apply-templates/> is equivalent to: <xsl:apply-templates select="node()"/> This ***includes*** whitespace-only nodes. The difference in the behaviour of MSXML and Saxon is due to the fact that by default the MSXML parser strips all whitespace-only nodes -- this makes the last "SubMenuItem" also the last child node of its parent and then the condition in the "xsl:if" is not true -- no " | " is added. To see that this is really so, just change the top node of the xml source as I did: <menus xml:space="preserve"> <MainMenu> <MainMenuItem URL="/">Home</MainMenuItem> <MainMenuItem URL="/strat.html">Strategic Vision</MainMenuItem> <MainMenuItem URL="/themes.html">Research Themes</MainMenuItem> <MainMenuItem URL="/edu.html">Education</MainMenuItem> <MainMenuItem URL="http://commercial.hq.nasa.gov">Commercial</MainMenuItem> </MainMenu> <SubMenu> <SubMenuItem URL="/strat.html#v">Mission</SubMenuItem> <SubMenuItem URL="/strat.html#g">Goals</SubMenuItem> <SubMenuItem URL="/strat.html#p">Philosophy</SubMenuItem> </SubMenu> </menus> As can be seen, I added the xml:space="preserve" and then with my Xselerator the result (as displayed by IE) was: Home | Strategic Vision | Research Themes | Education | Commercial | Mission | Goals | Philosophy | Asking the Xselerator to perform the transformation using Saxon, I again got the same result. Removing the xml:space="preserve" from the top element and specifying to the Xselerator to use MSXML, the result is: Home | Strategic Vision | Research Themes | Education | CommercialMission | Goals | Philosophy (the last " | " is missing) This is very nice to see through the XSelerator Debugger, which steps through the built-in template and clearly highlights the white-space only node, following the last "SubMenuItem". I usually do not use a Debugger, but this case shows the value of having a good XSLT Debugger (in this case as part of the Xselerator) to make more understandable and to literally visualise some more subtle aspects of XSLT processing. Everybody, who had this tool, would be easily able to understand what is actually happening in this situation. Cheers, Dimitre Novatchev. __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Passing local variable fr, Oliver Becker | Thread | [xsl] Re: Re: weird behavior with l, Thomas B. Passin |
[xsl] Passing local variable from o, Alex Genis | Date | RE: [xsl] weird behavior with last(, Oleg Tkachenko |
Month |