|
Subject: RE: [xsl] detecting text between nodes From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 24 Feb 2005 17:13:14 -0000 |
If the context node is a <br/> element, then
test="preceding-sibling::node()[1][self::br]"
tests whether the immediately preceding node is also a <br/> element.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Uwe Janner [mailto:xsl@xxxxxxxxx]
> Sent: 24 February 2005 16:59
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] detecting text between nodes
>
> dear xsl-specialists,
>
> i try write an xsl to transform html-documents (with a restricted
> html-subset) directly to fo.
>
> my only problem is the <br/>-tag:
> if i have "aaa<br/>bbb<br/>ccc"
> then i simply have to replace each br-tag with a <fo:block/>
> just to insert
> a line-break.
>
> but if i have "aaa<br/><br/>bbb" the first br is responsible for the
> line-break and the second will insert an empty line, i.e. i
> have to convert
> the second br-tag to something that inserts an empty line:
> "aaa<fo:block/><fo:block space-after="10"/>bbb"
>
> so, the attribute "space-after=10" is present if the
> preceding sibling is a
> "br" and there is nothing except whitespace between the
> current br and the
> preceding br;
>
> but how can i express this condition with xpath?
>
> <xsl:template match="br">
> <fo:block>
> <xsl:if test="name(./preceding-sibling::*[1])='br' and
> NOTHINGBUTWHITESPACEBETWEEN(.,./preceding-sibling::*[1])">
> <xsl:attribute name="space-after">10pt</xsl:attribute>
> </xsl:if>
> </fo:block>
> </xsl:template>
>
>
> tia for any hint!
>
> fusel!
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] detecting text between no, António Mota | Thread | [xsl] Chunking xml into single-topi, Kessler, Marcy |
| RE: [xsl] Predicate on root node?, Michael Kay | Date | Re: [xsl] Chunking xml into single-, David Carlisle |
| Month |