Subject: Re: AW: [xsl] global variable and position() once more From: fe.sola@xxxxxxxxxxxxxx Date: Thu, 28 Aug 2003 17:02:28 -0400 |
Hi Markus, It worked fine, thanks. Now I'm doing a similar thing but taking the text nodes between a text node that starts with 'References' and the text node with 'Description', but it's a similar template... again thanks, lizet Mensaje citado por Markus Abt <abt@xxxxxxxx>: > Hi, > > if you want output everything after the "Description" text node, try this: > > <?xml version="1.0" encoding="iso-8859-1"?> > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="/"> > <Document> > <!-- select all nodes after the Description text node --> > <xsl:apply-templates > select="html/body/node()[preceding-sibling::text()[starts-with(normalize-space(.), > 'Description')]]"/> > </Document> > </xsl:template> > > <!-- copy all nodes with their descendants. Adjust to your needs --> > <xsl:template match="@*|node()"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > > The Xpath works as follows: > - html/body/node() selects all child nodes of the body element. > - [ ... ] gives a condition to the previous selection. > It is tested for every selected node. > - preceding-sibling::text() selects all preceding siblings (for every selected node > above). > - starts-with(normalize-space(.), 'Description') tests for the "Description" text > node. > It is tested for every preceding sibling. > - So, preceding-sibling::text()[starts-with(normalize-space(.), 'Description')] > selects only this node. > - If there is such a preceding sibling, the outer condition ([...]) is true. > - The result is, only the html/body/node() with this condition true are selected. > - apply-templates then processes this nodes. > > The second template just copies everythig through, discard it, if you have > your own templates to handle further processing. > > > Hope this helps, > Markus > __________________________ > Markus Abt > Comet Computer GmbH > http://www.comet.de > > > ---------- > Von: fe.sola@xxxxxxxxxxxxxx > Gesendet: Donnerstag, 28. August 2003 17:53 > An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Betreff: RE: [xsl] global variable and position() once more > > Hello, being a newbie is a pain... > I decided to try Michael Kay's suggestion of using a global variable. My problem is > that > I need to select the text nodes after a text node that starts with the > word 'Description'. > The xhtml looks more or less like this: (This is a simplified sample version, could > provide the real one on request) > > <html> > <head> > <!--Something here--> > <head> > <body> > blah bla blah > <table> > <!-- something here--> > </table> > Description > <table> > <!-- something here--> > </table> > text nodes to select with the description text > > </body> > </html> > > My xsl stylesheet looks like this: > .. > <xsl:template match="/"> > ... > <Document> > <xsl:apply-templates select="html"/> > </Document> > ... > </xsl:template> > .. > <xsl:variable name="descPos" select="//text()[starts-with(normalize-space > (),'Description')]"/> > .. > <xsl:template match="html"> > <xsl:element name="description"> > <xsl:apply-templates select="text()[position()>$descPos]"/> > </xsl:element> > .. > </xsl:template> > .. > I can't manage to store in the descPos global variable the position of the node that > starts with 'Description', when I try select="//text()[starts-with(normalize-space > (),'Description')position()] or try to get the position function somewhere in that > XPath > expression I get errors. > So far the descPos variable gets a wrong value, always 1 and the mentioned text node > has > a position 30 or more on some other input documents. > thanks a lot for looking at this, > Lizet > > > > ------------------------------------------------- > Este mensaje fue enviado usando el servicio de correo en web de Infomed > http://webmail.sld.cu > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > ------------------------------------------------- Este mensaje fue enviado usando el servicio de correo en web de Infomed http://webmail.sld.cu XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
AW: [xsl] global variable and posit, Markus Abt | Thread | AW: [xsl] conditional element count, Markus Abt |
[xsl] Display order, Joseph Tan | Date | AW: AW: [xsl] global variable and p, Markus Abt |
Month |