Re: [xsl] Fwd: Parsing Excel - Selecting Ranges

Subject: Re: [xsl] Fwd: Parsing Excel - Selecting Ranges
From: Florent Georges <lists@xxxxxxxxxxxx>
Date: Tue, 21 Oct 2008 14:33:10 +0200 (CEST)
Luciano Greiner wrote:

  Hi

> I need to select Row elements between Rows containing first
> Cell/Data child filled with '#' and a clear first Cell/Data.

  You can use the << and >> operators:

    georgfl@bxl-wrk-090> cat luciano.xsl
    <xsl:stylesheet
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
          version="2.0">

       <xsl:output indent="yes"/>

       <xsl:template match="/sheet">
          <xsl:variable name="first" as="element(Row)" select="
              Row[Cell/Data eq '#']"/>
          <xsl:variable name="last" as="element(Row)" select="
              Row[Cell/Data eq '']"/>
          <xsl:sequence select="
              Row[. >> $first][. &lt;&lt; $last]/Cell/Data"/>
       </xsl:template>

    </xsl:stylesheet>

    georgfl@bxl-wrk-090> cat luciano.xml
    <sheet>
       <Row>
          <Cell><Data>#</Data></Cell>
       </Row>
       <Row>
          <Cell><Data>1</Data></Cell>
       </Row>
       <Row>
          <Cell><Data>2</Data></Cell>
       </Row>
       <Row>
          <Cell><Data/></Cell>
       </Row>
    </sheet>

    georgfl@bxl-wrk-090> saxon -s:luciano.xml -xsl:luciano.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Data>1</Data>
    <Data>2</Data>

  Regards,

-- 
Florent Georges
http://www.fgeorges.org/

Current Thread