|
| |
精品推荐 |
 |
|
| |
|
|
|
|
用Ruby+Builder创建XML应用
|
日期:2008年5月9日 作者: 查看:[大字体
中字体 小字体]
|
下面的irb示例向你展示了如何把元素内容放在元素内。其中,date元素包含3个子元素:year,month和day;并且子元素被创建于大括号中。
>> x.date { ?> x.year "2006" >> x.month "01" >> x.day "01" >> } <date> <year>2006>year> <month>01>month> <day>01>day> <date> => #>IO:0x279e7e8> >> 这些irb示例实际隐藏了用Ruby编写原始的XML的明显特征。下面的示例向你展示更为复杂些的Builder应用。 四、 编写一个哈希作为XML标注
通过使用Builder,程序favs.rb将创建一个称为favorites的哈希(hash),然后把它作为XML写出:
#!/usr/bin/ruby require 'builder' favorites = { 'candy' => 'Neccos', 'novel' => 'Empire of the Sun', 'holiday' => 'Easter' } xml = Builder::XmlMarkup.new( :target => $stdout, :indent => 2 ) xml.instruct! :xml, :version => "1.1", :encoding => "US-ASCII" xml.favorites do favorites.each do name, choice xml.favorite( choice, :item => name ) end end 使用Ruby运行favs.rb,其输出将是:
<?xml version="1.1" encoding="US-ASCII"?> <favorites> <favorite item="candy">Neccos<favorite> <favorite item="holiday">Easter<favorite> <favorite item="novel">Empire of the Sun<favorite> <favorites> 最上面一行代码找到Ruby解释器(#!/usr/bin/ruby)的位置。然后,装载Builder库。接着,通过三个名字/值对定义favorites哈希。在此,Builder对象xml被实例化。instruct!方法通过使用一个显式的目标和假属性创建一个XML文档声明(尽管文档可以被作为XML 1.0传递,但是,我在该方法中把版本改为1.1仅为说明实现原理)。
在此,在favorites上调用了一个块(block)(注意,你可以用括号方式来代替上面的"do……end"语句)。对于哈希中的每一对值,都是通过把该哈希名作为一个属性并且把哈希值作为元素内容来创建的。你可能猜出,用这种方式使用Builder可以非常方便地帮助把大量的名字/值对导出到XML中。
五、 创建有效的XHTML文档
最后,我将再讨论一下使用Builder编写有效的XHTML文档的其它的方法和技术。下面是创建这种文档的一个程序(xhtml.rb):
#!/usr/bin/ruby require 'builder' x = Builder::XmlMarkup.new(:target => $stdout, :indent => 1) x.instruct! x.declare! :DOCTYPE, :html, :PUBLIC, "-//W3C//DTD XHTML 1.0 Strict//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" x.html( "xmlns" => "http://www.w3.org/1999/xhtml" ) { x.head { x.title "XHTML 1.0 example" x.style( "type"=>text/css" ) { x.text! "h1 {font-family:tahoma,sans-serif;font-size:18pt;color:blue} body{font-family:georgia,serif}" } } x.body { x.h1 "Hello from Builder" x.p "A Ruby library that facilitates the programatic generation of XML." x.p { y y <<"Methods of interest from <code<Builder::XmlMarkup</code> } x.ul { x.li "cdata!" x.li "comment!" x.li "declare!" x.li "instruct!" x.li "new" } x.p{ y y << "Methods of interest from "; x.code "Builder::XmlBase"; y << ":" } x.ul { x.li "<<" x.li "new" x.li "text!" } } }
通过使用符号和字符串,Declare!方法产生一个相应于XHTML 1.0文档类型定义的文档类型声明。style元素用于指定一个类型属性,然后使用text!方法创建了一些CSS。这里选择了把内容放在第一个参数中,见下面代码片断:
上一篇:如何发挥网络广告的威力?
下一篇:数据结构教程 第二十八课 图的存储结构
|
| 相关文章: |
|
|
|
| 相关软件: |
|
|
|
|