xsl-list
[Top] [All Lists]

RE: [xsl]Problem with Position()?

2007-10-13 09:46:37
Dear Alice,

The problem lies in the fact that white-space is counted as contents of
the book element as well. You haven't specified a DTD nor a Schema that
states otherwise, so white-space is considered significant. Contents of
the book element is numbered as follows:

Book:
1. white-space
2. first p element
3. white-space
4. second p element
5. white-space

You can circumvent this problem by not using <xsl:apply-templates />,
which selects node() implicitly, which means: process all contents,
including character data and (significant) white-space as well. Instead,
you can use the select attribute of xsl:apply-templates and force to
evaluate only elements:

<xsl:apply-templates select="*" />

Or even stronger, only p child elements:

<xsl:apply-templates select="p" />

Kind regards,
Geert


   
 
Drs. G.P.H. Josten
Consultant
 
 

Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665  JZ  Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
www.daidalos.nl
KvK 27164984


De informatie - verzonden in of met dit emailbericht - is afkomstig van 
Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit 
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit 
bericht kunnen geen rechten worden ontleend.
 

From: Abel Braaksma [mailto:abel(_dot_)online(_at_)xs4all(_dot_)nl] 
Sent: zaterdag 13 oktober 2007 18:25
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl]Problem with Position()?

Jay Bryant wrote:

Try changing the test to use the preceding-sibling axis, thus:

<xsl:when test="count(preceding-sibling::p) = 0">

That test catches the first p in a series of neighboring p elements.



Be aware that with large input files and with a 
not-too-optimizing processor, this test might perform 
quadratic. If that happens, you can try changing it to:

<xsl:when test="not(preceding-sibling::p[1])">

which will behave the same but is easier optimized by the processor.

A note to the OP: in your xsl:otherwise statement you have na 
added xsl:if which seems redundant there because it tests for 
the inverse of the xsl:when. If so intended, you can remove it.

Cheers,
-- Abel Braaksma

--~------------------------------------------------------------------
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>