Subject: Re: Conditional in-context nodeset variables
From: "Vyacheslav Sedov" <vyacheslav.sedov@xxxxxxxxx>
Date: Thu, 3 Jan 2008 19:22:52 +0300
|
yep - it small simplified part of big code (more precisely - just testcase),
i don`t use xsl:...group since it make my code behavior like it use pull model,
but i am trying to use push model - maybe it wrong & i just not
familiar with grouping,
i feel myself with this task like cow on ice :)
guess i need take pen and paper and first perform this task on it -
look like it not solved mentally :)
by the way - in my case i began use select="if () then () else ()"
structure - look like it work as expected,
i am not fan of several-lines long attributes but at least it work
with best wishes,
Slav
On Jan 3, 2008 6:56 PM, Andrew Welch <andrew.j.welch@xxxxxxxxx> wrote:
>
> On 03/01/2008, Vyacheslav Sedov <vyacheslav.sedov@xxxxxxxxx> wrote:
> > have problem
> >
> > for example (as input any valid XHTML)
> > and context is first h1 node
> >
> >
> > <xsl:variable name="level1" select="following-sibling::h1[1]"/>
> > <xsl:variable name="level2" select="following-sibling::h2[1]"/>
> >
> > <xsl:variable name="next-stop">
> > <xsl:choose>
> > <xsl:when test="not($level1 and $level2)">
> > <xsl:sequence select="following-sibling::*[last()]"/>
> > </xsl:when>
> > <xsl:when test="$level1 << $level2">
> > <xsl:sequence select="$level1"/>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:sequence select="$level2"/>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:variable>
> >
> > <xsl:apply-templates select="following-sibling::*[. << $next-stop]"/>
> >
> > $level1 and $leve2 contain links to live in-context node
> > but variable $next-stop contain copy (not reference to node) of level1
> > or level2 variable
> > and even following-sibling::*[last()] provide just copy instead of
> > in-context nodeset
> > so << not work as expected :(
>
> Is it just the usual problem of $next-stop being a document-node()? If
> so you need:
>
> <xsl:variable name="next-stop" as="element()">
>
> It looks like you are trying to do positional grouping - maybe look at
> xsl:for-each-group using group-ending-with.
>
> By the way, if you provide a small complete sample input, with a
> complete stylesheet that highlights the problem then it's easy for
> people to cut and paste the samples and reproduce your problem. Not
> many will be bothered to mock up an input...
>
> cheers
> --
> Andrew Welch
> http://andrewjwelch.com
> Kernow: http://kernowforsaxon.sf.net/
|