I guess you want the first preceding sibling node that isn't a whitespace text
node, provided it is a processing instruction.
It would be easier if you did xsl:strip-space...
But you could do
preceding-sibling::node()[not(self::text())][1][self::processing-instruction(
)]
Michael Kay
Saxonica
> On 8 May 2023, at 14:32, rick@xxxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi All,
>
> I have this XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <manual>
> <?Fm Document GN800042-VGRShreddingMill_UM_cover.fm
<http://gn800042-vgrshreddingmill_um_cover.fm/>?>
> <cover/>
> <?Fm Document BP00001.fm <http://bp00001.fm/>?>
> <chapter/>
> <?Fm Document BP00010.fm <http://bp00010.fm/>?>
> <chapter/>
> <?Fm Document GN800042.fm <http://gn800042.fm/>?>
> <chapter/>
> <?Fm Document SC00019.fm <http://sc00019.fm/>?>
> <chapter/>
> <chapter/>
> </manual>
>
> For each chapter element, I want to grab the immediately preceding
processing-instruction. The third message in my code doesnbt return it. The
second one does, but it doesnbt insure that the processing-instruction is
the first preceding-sibling. Thanks in advance for your help.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform
<http://www.w3.org/1999/XSL/Transform>"
> xmlns:xs="http://www.w3.org/2001/XMLSchema
<http://www.w3.org/2001/XMLSchema>"
> xmlns:math="http://www.w3.org/2005/xpath-functions/math
<http://www.w3.org/2005/xpath-functions/math>"
> exclude-result-prefixes="xs math"
> version="3.0" expand-text="yes">
>
> <xsl:output indent="yes"/>
>
> <xsl:template match="/">
> <xsl:apply-templates/>
> </xsl:template>
>
> <xsl:template match="/*/*">
> <xsl:message>{local-name(.)}</xsl:message>
>
<xsl:message>{preceding-sibling::processing-instruction()[1]}</xsl:message>
>
<xsl:message>{preceding-sibling::*[1][self::processing-instruction()]}</xsl:m
essage>
> </xsl:template>
>
> <xsl:mode on-no-match="shallow-skip"/>
>
> </xsl:stylesheet>
>
> Rick
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)
|