Module: Dcc::Transform::Xslt

Defined in:
lib/dcc/transform/xslt.rb

Overview

Dcc::Transform::Xslt applies an XSLT stylesheet to a DCC XML document.

Nokogiri is OFFICIALLY banned outside validation, so we shell out to the system xsltproc (libxslt) for XSLT 1.0 transforms. For XSLT 2.0/3.0, set ENV["SAXON_JAR"] to point at saxon-he.jar.

Class Method Summary collapse

Class Method Details

.call(xml, stylesheet, engine: :xsltproc) ⇒ Dcc::Transform::Result

Parameters:

  • xml (String, Lutaml::Model::Serializable)
  • stylesheet (String)

    path to XSLT file or raw XSLT.

  • engine (Symbol) (defaults to: :xsltproc)

    :xsltproc (default) or :saxon.

Returns:



18
19
20
21
22
23
24
25
26
27
# File 'lib/dcc/transform/xslt.rb', line 18

def call(xml, stylesheet, engine: :xsltproc)
  xml_string = xml.is_a?(::String) ? xml : xml.to_xml
  output = case engine
           when :xsltproc then run_xsltproc(xml_string, stylesheet)
           when :saxon then run_saxon(xml_string, stylesheet)
           else
             raise ::ArgumentError, "unknown XSLT engine: #{engine.inspect}"
           end
  ::Dcc::Transform::Result.new(payload: output, engine: engine)
end