lib/nokogiri/xslt/stylesheet.rb
# frozen_string_literal: true
module Nokogiri
module XSLT
###
# A Stylesheet represents an XSLT Stylesheet object. Stylesheet creation
# is done through Nokogiri.XSLT. Here is an example of transforming
# an XML::Document with a Stylesheet:
#
# doc = Nokogiri::XML(File.read('some_file.xml'))
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
#
# xslt.transform(doc) # => Nokogiri::XML::Document
#
# Many XSLT transformations include serialization behavior to emit a non-XML document. For these
# cases, please take care to invoke the #serialize method on the result of the transformation:
#
# doc = Nokogiri::XML(File.read('some_file.xml'))
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
# xslt.serialize(xslt.transform(doc)) # => String
#
# or use the #apply_to method, which is a shortcut for `serialize(transform(document))`:
#
# doc = Nokogiri::XML(File.read('some_file.xml'))
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
# xslt.apply_to(doc) # => String
#
# See Nokogiri::XSLT::Stylesheet#transform for more information and examples.
class Stylesheet
# :call-seq:
# apply_to(document, params = []) -> String
#
# Apply an XSLT stylesheet to an XML::Document and serialize it properly. This method is
# equivalent to calling #serialize on the result of #transform.
#
# [Parameters]
# - +document+ is an instance of XML::Document to transform
# - +params+ is an array of strings used as XSLT parameters, passed into #transform
#
# [Returns]
# A string containing the serialized result of the transformation.
#
# See Nokogiri::XSLT::Stylesheet#transform for more information and examples.
def apply_to(document, params = [])
serialize(transform(document, params))
end
end
end
end