= Ruby/XSLT

== About

Ruby/XSLT is a simple XSLT class based on libxml <http://xmlsoft.org/> and libxslt <http://xmlsoft.org/XSLT/>

== Licence

Copyright (C) 2003-2012 Gregoire Lejeune <gregoire dot lejeune at free dot fr>

Ruby/XSLT is freely distributable according to the terms of the
GNU General Public License (see the file 'COPYING').

This program is distributed without any warranty. See the file
'COPYING' for details.

== INSTALLATION

  sudo gem install ruby-xslt
  
or 

  ruby extconf.rb # see CONFIGURATION for more options
  make
  make test
  make doc
  sudo make install

=== CONFIGURATION

  --help                   display this help and exit
  
  --with-xslt-lib=PATH
  --with-xslt-include=PATH
  --with-xslt-dir=PATH     specify the directory name for the libxslt include 
                           files and/or library 
  
  --disable-error-handler  disables the new error handler 
  
  --disable-exslt          disables libexslt support <http://exslt.org/>
  

== EXAMPLES

=== Simple example
  require 'xml/xslt'

  xslt = XML::XSLT.new()
  xslt.xml = "text.xml"
  xslt.xsl = "test.xsl"

  out = xslt.serve()
  print out;

=== REXML support
  require 'rexml/document'
  require 'xml/xslt'

  xslt = XML::XSLT.new()

  xslt.xml = REXML::Document.new File.read( "test.xml" )
  xslt.xsl = REXML::Document.new File.read( "test.xsl" )

  out = xslt.serve()
  print out;

=== XML::Smart support
  require 'xml/smart'
  require 'xml/xslt'

  xslt = XML::XSLT.new()

  xslt.xml = XML::Smart.open( "test.xml" )
  xslt.xsl = XML::Smart.open( "test.xsl" )

  out = xslt.serve()
  print out;
  
=== Parameters support
  require "xml/xslt"

  xslt = XML::XSLT.new()
  xslt.xsl = "parameter.xsl"
  xslt.xml = "test.xml"
  xslt.parameters = { "p1" => "the first parameter ...",
                      "p2" => "'and the second one!'" }
  xslt.save("test1.html")
  
  xslt.parameters = { "p1" => "Ruby...",
                      "p2" => "'...is cool !'" }
  xslt.save("test2.html")

=== External functions support
  require "xml/xslt"

  xslt = XML::XSLT.new()
  xslt.xsl = "functions.xsl"
  xslt.xml = "test.xml"
  
  XML::XSLT.registerExtFunc("http://test.none", "round-trip") do |arg|
    arg
  end

  XML::XSLT.registerExtFunc("http://test.none", "type") do |arg|
    arg.class.to_s
  end

  print xslt.serve

=== Error handling

  XML::XSLT.registerErrorHandler { |string| puts string }

  xslt = XML::XSLT.new
  xslt.xml = "not xml"

This fragment would print:

  Entity: line 1: 
  parser 
  error : 
  Start Tag expected, '<' not found
  not xml
  ^
