Paul,
try changing the test to this:
<xsl:when test = "name(preceding-sibling::*[1])='transition'">
I think the way you have it now simply returns the first previous
occurrence of a 'transition' element rather than testing to see if the
immediately previous element is a 'transition' element.
-rick
At 03:24 PM 4/22/03 -0400, you wrote:
I can't understand how to use preceding sibling, despite the two books I
have on xslt.
Here is my original XML file:
<paragraph>A paragraph</paragraph>
<transition/>
<paragraph>A pargraph after a transition</paragraph>
I want to transform this to:
<p>A paragraph</p>
<p rend = "transition">A paragrah after transition</p>
Here is en excerpt form my unsuccessful code:
<xsl:template match = "paragraph">
<xsl:choose>
<xsl:when test = "preceding-sibling::transition[1]">
<p rend="transition">
<xsl:apply-templates/>
</p>
</xsl:when>
<xsl:otherwise>
<p>
<xsl:apply-templates/>
</p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
This transformation turns *all* paragraphs after a </transtion> into <p
rend ="transtion">.
What I want to say is something like "if the preceeding sibling's
element name is 'transtion', do something. Doing this with ancestors and
descendants is usually pretty easy to figure out. But preceeding sibling
really has me stumped!
Thanks
Paul
--
************************
*Paul Tremblay *
*phthenry(_at_)earthlink(_dot_)net*
************************
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Rick Taylor
XML Developer
PPDM Association
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list