Re: [xsl] List type, probably a sequence problem (XSL 2)

Subject: Re: [xsl] List type, probably a sequence problem (XSL 2)
From: "Graydon graydon@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 8 Jun 2023 19:50:12 -0000
On Thu, Jun 08, 2023 at 07:21:42PM -0000, Trevor Nicholls trevor@xxxxxxxxxxxxxxxxxx scripsit:
> Hi Graydon

Hi!

> Thanks for taking a look.
> 
> Your idea was my starting point too, but the trouble with
> ancestor::list[not(descendant::steps)] is that if I'm the context node (a
> list) I may have a steps *descendant* (which will thus also be a descendant
> of all of my ancestors), but this descendant should not influence my
> formatting. Steps only matter if they are my ancestors.

I think if you assign the context node to $this, you could

ancestor::list[not(descendant::steps[descendant::*[. is $this]])]

which isn't dripping with elegance but might do the thing.

> So I switched from this approach to trying to manipulate a sequence, but ran
> out of ingenuity pretty quickly.

$nameList := ancestor::*[self::list or self::steps]/name() 

$closest as xs:integer := $nameList => index-of('steps') => min()

should give you the closest steps

(assuming there is one; there needs to be a test for that.)

then it's 

$relevant := subsequence($nameList,1,$closest) => string-length()

and do the odd-or-even testing on $relevant, maybe?

(Pardon the XQuery syntax!)

-- 
Graydon Saunders  | graydonish@xxxxxxxxx
^fs oferiode, pisses swa mfg.
-- Deor  ("That passed, so may this.")

Current Thread