Search

Excel to SVG with XSLT - up with XSLT, down with XQuery :)

Taking up the pipeline idea, I rewote the fire application to use a sequence of XSLT transformations.  XQuery now just glues them together.

This uses 3 XSLT scripts:

  1. elat.at output to data
  2. data to graph
  3. graph to svg

      
      
      declare option exist:serialize "method=xhtml media-type=application/xhtml+xml omit-xml-declaration=no indent=yes 
              doctype-public=-//W3C//DTD XHTML 1.0 Strict//EN
              doctype-system=http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";
        
       let $xml :=  doc("http://elev.at/lift?xls=http://www.communities.gov.uk/documents/statistics/xls/1403043.xls")
      
       let $data := transform:transform(
                            $xml
                           , doc("/db/Wiki/graph2svg/xsl2fire.xsl")
                           ,( ))  
      
      let $graph := transform:transform(
                           $data
                         , doc("/db/Wiki/graph2svg/fires.xsl")
                         , ())
      
      let $svg := transform:transform(
                          $graph
                         , doc("/db/Wiki/graph2svg/xmsgr2svg.xsl")  
                         ,() )
      
      return 
      <html xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:svg="http://www.w3.org/2000/svg">
        <head>
          <title>Fires in the UK</title>
        </head>
        <body>
          <h1>Fires in the UK</h1>
            {$svg}
        </body>
      </html>
      
      
      

      Graph

      The steps create intermediate documents - easier for testing than nesting the transformations.

      My next task is to replace the XQuery script with an XProc pipeline.