Module: ScmsXmlHandler

Defined in:
lib/scms/scms-xmlhandler.rb

Constant Summary collapse

VERSION =
'1.0.0'

Class Method Summary collapse

Class Method Details

.transform(xmlstring) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/scms/scms-xmlhandler.rb', line 5

def ScmsXmlHandler.transform(xmlstring)

	# This could be a better solution: http://stackoverflow.com/questions/3542264/can-nokogiri-search-for-xml-stylesheet-tags

	xml = Nokogiri::XML(xmlstring)
	#<?xml-stylesheet type="text/xsl" href="../skins/html5-boilerplate.xsl"?>
	pi = xml.children[0]
	mypi = pi.to_s.scan(/.* href="(.*)"\?>/)
	
	if mypi[0] != nil
		xslpi = mypi[0][0].to_s
		puts "Transforming with #{xslpi}"
		xslpi = File.join($website, xslpi)
		
		if File.exists?(xslpi)
			begin 
				xsl = File.read(xslpi)
				xslt  = Nokogiri::XSLT(xsl)
				return xslt.transform(xml).to_html
			rescue StandardError => e
				ScmsUtils.errLog("Error transforming")
				ScmsUtils.errLog(xslpi)
				ScmsUtils.errLog(e.message)
				ScmsUtils.errLog(e.inspect)
				#print e.backtrace.join("\n")
			rescue Exception => e  
				ScmsUtils.errLog("Error transforming with #{xslpi}")
				ScmsUtils.errLog(e.message)
			end
		else
			puts "Cant find pi: #{xslpi}"
		end
	else
		puts "No XSL processing instruction found in #{view}"
	end

	return xmlstring

end