Subject: Re: [xsl] detecting text between nodes|
From: António Mota <amsmota@xxxxxxxxx>
Date: Thu, 24 Feb 2005 17:04:12 +0000
I'n not a xsl-specialist but maybe preceding-sibling::*/text() On Thu, 24 Feb 2005 17:59:02 +0100, Uwe Janner <xsl@xxxxxxxxx> wrote: > 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::*)='br' and > NOTHINGBUTWHITESPACEBETWEEN(.,./preceding-sibling::*)"> > <xsl:attribute name="space-after">10pt</xsl:attribute> > </xsl:if> > </fo:block> > </xsl:template> > > tia for any hint! > > fusel!