Re: [xsl] checking sequence inside processing-instruction

Subject: Re: [xsl] checking sequence inside processing-instruction
From: "Ganesh Babu N" <nbabuganesh@xxxxxxxxx>
Date: Mon, 11 Aug 2008 17:47:19 +0530
Dear All,

I am testing the saxon:get-pseudo-attribute() function in my xslt 1.0
style sheet to generate the HTML view.

My processing-instruction as follows:

<?PAGEBREAK id="PAGE0001" number="i"?>

I want to display the value in in the number attribute in the HTML view

My XSL is as follows:

<xsl:template match="processing-instruction('PAGEBREAK')">
<p><xsl:value-of select="saxon:get-pseudo-attribute('@number')"/></p>
</xsl:template>

this XSL is not generating any info related to number information.
even i tried with the @id then it is displaying the following message:

Warning: on line 162 of file:/D:/ganesh-schemas/xml/gae.xsl:
  The attribute axis starting at a processing-instruction node will never select
 anything

Please help me in getting the correct result.

Regards,
Ganesh


On 5/31/08, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> 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