# -*- ruby -*- # # Using an internal stack. # require 'xtemplate' require 'xtemplate/xml' data = { 'members' => [ {'name' => 'name1', '@uid' => 1, 'email' => '<name1@com>'}, {'name' => 'name2', '@uid' => 2, 'email' => '<name2@com>'}, {'name' => 'name3', '@uid' => 3, 'email' => '<name3@com>'}, ] } text = <<EOF <?xml version="1.0" encoding="EUC-JP"?> <members xmlns:xt="#{XTemplate::BIND_URI}"> <xt:select id="/members{tag}"> <xt:copy-of id="tag" with="member" /> </xt:select> </members> EOF t = XTemplate::XMLTemplate.new(text) print(t.expand(data))