RE: [xsl] checking sequence inside processing-instruction

Subject: RE: [xsl] checking sequence inside processing-instruction
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 31 May 2008 08:58:14 +0100
You context node in the template is a processing instruction. This path
expression

<xsl:for-each select="processing-instruction()/name()">

attempts to select children of that processing instruction that are
themselves processing instructions. A processing instruction cannot have
children, so Saxon gives you a warning. I don't know what the for-each is
doing there anyway, take it out.

Note also that a processing instruction does not have attributes. id="P001"
might look like an attribute, but it is not. You have to parse the value out
by hand, or by using the saxon:get-pseudo-attribute() extension function,
see

http://www.saxonica.com/documentation/extensions/functions/getpseudoattribut
e.html 

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Ganesh Babu N [mailto:nbabuganesh@xxxxxxxxx] 
> Sent: 31 May 2008 06:07
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] checking sequence inside processing-instruction
> 
> Hai,
> 
> I am having some processing instructions which will appear like this.
> 
> <?PAGEBREAK id="P001"?>
> -------------------
> -----------------
> <?PAGEBREAK id="P002"?>
> -------------
> ---------------
> <?PAGEBREAK id="P003"?>
> --------------------
> --------------------
> <?PAGEBREAK id="P004"?>
> ------------------------
> ------------------------
> <?PAGEBREAK id="P006"?>
> 
> 
> the result should say id="P006" is out of sequence.
> 
> <xsl:template match="processing-instruction()">
>      <xsl:for-each select="processing-instruction()/name()">
>         <xsl:if test="@id != 
> following-sibling::processing-instruction()/@id"/>
>            
> <xsl:message>following-sibling::processing-instruction()/@id
> is out of sequence</xsl:message>
>         </xsl:if>
>      </xsl:for-each>
> <xsl:template>
> 
> When i compile this sheet with saxon9b, it is showing error 
> as processing-instruction can not select anything.
> 
> Please help me in solving this problem.
> 
> Regards,
> Ganesh

Current Thread