xsl-list
[Top] [All Lists]

RE: Testing node immediately following in mixed content

2004-05-18 15:15:07
Thanks for the help Michael.  It was the whitespace-only nodes that were
causing the problem.  I couldn't get your xPath below to work, so I changed
my attack:

preceding-sibling::node()[1][self:xref]

Combined with

<xsl:strip-space elements="para"/>

Did the trick.

Thanks again!
-RG

-----Original Message-----
From: Michael Kay [mailto:mhk(_at_)mhk(_dot_)me(_dot_)uk] 
Sent: Friday, May 14, 2004 4:01 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Testing node immediately following in mixed content


The following-sibling::node() after your xref is a whitespace-only text
node. You need something like 

following-sibling::node()[not (self::text() and
normalize-space(.)][1][self::xref]

And if you think it's late on a Friday, it's early on Saturday here.

Michael Kay 

-----Original Message-----
From: Ryan Graham [mailto:Ryan(_dot_)Graham(_at_)apollogrp(_dot_)edu]
Sent: 14 May 2004 22:21
To: 'xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: [xsl] Testing node immediately following in mixed content

Hi all,

It may be that it is late Friday, but for the life of me, I
cannot seem to
get the following template to output a comma when the node immediately
following the context node is a certain type.  Maybe my XPath 
is wrong?

I basically want to split "back-to-back" xref's with a comma
(simulating
multiple footnote references). My output is HTML.

Sample xml (that needs comma seperation):

<para>Some filler text
      <xref linkend="burnc01-note-0001"/>
      <xref linkend="burnc01-note-0002"/>
completing the paragraph.</para>

Sample xml (that doesn't need a comma added)

<para>Some filler text
      <xref linkend="burnc02-note-0006"/> 
      some more filler text   
      <xref linkend="burnc02-note-0007"/>
</para>

Stylesheet snippet:

<xsl:template match="para">
      <p>
              <xsl:apply-templates/>
      </p>
</xsl:template>

<xsl:template match="xref">
      <a href="{concat('#',@linkend)}"><sup><xsl:value-of
select="number(substring-after(@linkend,'note-'))"/></sup></a>
      <xsl:if test="name(following-sibling::node()[1]) = 'xref'">
              <sup>,</sup>
      </xsl:if>
</xsl:template>

XmlSpy's xPath evaluator tells me that this is sound logic,
but using Saxon,
I can't get the comma in the output.

Thanks,
Ryan

--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--




--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--


<Prev in Thread] Current Thread [Next in Thread>