Re: AW: [xsl] global variable and position() once more

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