Re: [xsl] Pattern notation for preceding-sibling

Subject: Re: [xsl] Pattern notation for preceding-sibling
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 11 Aug 2014 11:31:45 -0000
I would write

/foo/E/preceding-sibling::*[self::A | self::N]

If A and N have something in common that leads to this kind of expression
being meaningful, then in a schema-aware world it's quite likely that you can
make them members of the same substitution group G, in which case you can
write

/foo/E/preceding-sibling::schema-element(G)

And another possibility is

/foo/E/preceding-sibling::*[not(self::B)]

Michael Kay
Saxonica
mike@xxxxxxxxxxxx
+44 (0) 118 946 5893




On 11 Aug 2014, at 10:49, Heiko Niemann kontakt@xxxxxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Hi,
>
> a rather basic question, but I was not able to find samples/answers for it
> yet.
>
> Elements A,B,B,N,E,B,C are contained in element foo.
>
> /foo/E/preceding-sibling::* will return A,B,B,N;
>
> /foo/E/preceding-sibling::N will return N;  - easy -
>
>
> Now I want A,N to be returned, so my first guess is, that this might work:
>
> /foo/E/preceding-sibling::(A,N)
>
> But it does not, so I either have to write
>
> /foo/E/(preceding-sibling::A, preceding-sibling::N) or
>
> /foo/E/*[name() = ('A','N')]
>
>
> So, is there a (short) notation that I missed so far, that does what I
> expected /foo/E/preceding-sibling::(A,N) to do?
>
>
> Regards,
> Heiko

Current Thread