# -*- ruby -*- # # Using templates for expanding data. # require 'xtemplate' require 'xtemplate/xml' data = XTemplate::XMLDocument.new(<<EOS) <?xml version="1.0"?> <members xmlns:xt="http://xtemplate.sourceforge.net/xtemplate"> <member uid="1"> <name>name1</name> <comment> Home Page: <ul> <li><link>http://www.foo.bar/</link></li> <li><a href="http://www2.foo.bar/">Second page</a></li> </ul> </comment> </member> <member uid="2"> <name>name2</name> <comment>Home Page: <link>http://www.bar.foo/</link></comment> </member> </members> EOS text = <<EOF <?xml version="1.0" encoding="EUC-JP"?> <xt:template xmlns:xt="#{XTemplate::BIND_URI}"> <xt:expand id="//*[link]" strip="yes"> <a href="@{link}" xt:id="."><xt:value-of id="link" /></a> </xt:expand> <members> <xt:copy-of id="/members" /> </members> </xt:template> EOF t = XTemplate::XMLTemplate.new(text) print(t.expand(data))