Subject: Re: [xsl] Slow XSLT From: Cleyton Jordan <cleytonjordan@xxxxxxxxxxx> Date: Fri, 7 Mar 2008 11:36:19 +0000 (GMT) |
Hi, --- Manfred Staudinger <manfred.staudinger@xxxxxxxxx> wrote: > - see Michael Kay: > > http://www.ibm.com/developerworks/xml/library/x-xslt/ > Manfred I am reading one of the articles that Manfred has suggested (Michael Kay: What kind of language is XSLT?) so that I can learn more about using node sets, apply templates and recursion but I do not fully understand some of the XPATH expressions. I would appreciate your help in understanding the expressions below: Given this XML (as per the Michael Kay's article): ________________ <results group="A"> <match> <date>10-Jun-1998</date> <team score="2">Brazil</team> <team score="1">Scotland</team> </match> <match> <date>10-Jun-1998</date> <team score="2">Morocco</team> <team score="2">Norway</team> </match> <match> <date>23-Jun-1998</date> <team score="1">Brazil</team> <team score="2">Norway</team> </match> </results> These are the expressions used to compute the teams standings: 1 - <xsl:variable name="teams" select="//team[not(.=preceding::team)]"/> I know that this expression is getting a node set of all the unique team elements. I am confused about the "." (dot) in this expression and the comparisson with the preceding::team. For the first team, does the "." (dot) match the value of the node - 'Brazil' - and preceding::team match the value as well? select="//team[not('Brazil'=preceding::'Brazil')]"/> or "." and preceding::team match the wholde node? What are we comparing here the element value or the whole team element? +++++++ 2 - Here we are inside a loop <xsl:template match="results"> <xsl:for-each select="$teams"> <xsl:variable name="this" select="."/> Again does "." match the value of each team or the whole team element? 3 - <xsl:variable name="played" select="count($matches[team=$this])"/> Now we are computing how many times a particular team has played. count($matches[team=$this]) When you use this predicate [team=$this] are we comparing the value of the element or the team elements ? 4 - <xsl:variable name="won" select="count($matches[team[.=$this]/@score > team[.!=$this]/@score])"/> I know that this expression is computing the victories of a particular team. However, I do not understand the logic of the expression. We have an extra predicate: [team[.=$this]/@score Why cant we just use [team=$this]/@score ? +++++++++++++++ 5 - <xsl:variable name="for" select="sum($matches/team[.=current()]/@score)"/> What does current() mean in here? Is it the same as the $this variable? In this case we are not using a predicate for the $matches variable. why? $matches/team $matches/team[.=current()]/@score) Thanks for you help. Cheers C ___________________________________________________________ To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre. http://uk.security.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Slow XSLT, Manfred Staudinger | Thread | Re: [xsl] Slow XSLT, Andrew Welch |
Re: [xsl] XSL omit part of a text i, David Carlisle | Date | Re: [xsl] Question about variable d, Andrew Welch |
Month |