在Rails中使用样式表呈现XML

时间:2012-02-24 06:03:37

标签: ruby-on-rails ruby xml xslt

我无法弄清楚如何获得渲染集合(作为XML)以包含样式表行,例如:

<?xml-stylesheet type="text/xsl" href="example.xsl" ?>

This guy说要添加一个proc:

proc = Proc.new { |options| options[:builder].instruct!(:xml-stylesheet, type=>'text/xsl', :href=>'something.xsl') }
@foo.to_xml :procs => [proc]

但我无法让它发挥作用。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

看看Nokogiri的宝石:http://nokogiri.org/Nokogiri/XSLT/Stylesheet.html

doc   = Nokogiri::XML(File.read('some_file.xml'))
xslt  = Nokogiri::XSLT(File.read('some_transformer.xslt'))

puts xslt.transform(doc)

答案 1 :(得分:0)

您可以使用Rails附带的atom_feed帮助程序:

atom_feed(instruct: {
    'xml-stylesheet' => {type: 'text/xsl', href: 'styles.xml'}
  }) do |feed|
  feed.title "My Atom Feed"
  # entries...
end

导致(仅显示前3行):

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="styles.xml"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">

或者,如果不渲染atom_feed,您只需在构建器中使用instruct

xml.instruct! 'xml-stylesheet', href: 'style.xml', type: 'text/xsl'