[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] How to find out if the preceding sibling is a PI


Subject: Re: [xsl] How to find out if the preceding sibling is a PI
From: JBryant@xxxxxxxxx
Date: Fri, 2 Dec 2005 15:44:50 -0600

Hi, Nadia,

Try this:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="design.consideration">
    <result>
      <xsl:choose>
        <xsl:when 
test="generate-id(../processing-instruction('xm-insertion_mark_start')/following-sibling::*[1]) 
= generate-id()">
          <xsl:text>yes</xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>no</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </result>
  </xsl:template>

</xsl:stylesheet>

I tested that with (with Saxon 8.6.1) on the following test files:

<x>
  <?xm-insertion_mark_start author="Nadia Swaby" 
time="20051202T111856-0500"?>
  <test/>
  <design.consideration></design.consideration>
</x>

(which produced "no")

and

 <x>
  <?xm-insertion_mark_start author="Nadia Swaby" 
time="20051202T111856-0500"?>
  <design.consideration></design.consideration>
  <test/>
</x>

(which produced "yes")

HTH

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)





Nadia.Swaby@xxxxxx 
12/02/2005 02:46 PM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

Subject
[xsl] How to find out if the preceding sibling is a PI






Hi all,

I have a document that looks something like this:

<?xm-insertion_mark_start author="Nadia Swaby"
time="20051202T111856-0500"?>
<design.consideration></design.consideration>

I need to do a test to find out if the sibling immediately preceding the
design.consideration element is an xm-insertion_mark_start PI.

Basically, I need something like
preceding-sibling::*[position() = 1 and
processing-instruction('xm-insertion_mark_start')]
but that statement doesn't return anything.

Is there any way of doing this?

Thanks

Nadia


Current Thread