# -*- ruby -*-
#
# How to expand a template with data.
#

require 'xtemplate'

class Comment
  def initialize(str)
    @str = str
  end

  def to_s
    @str
  end
end

data = {
  'members' => [
    {'name' => 'name1', 'age' => 21},
    {'name' => 'name2', 'age' => 22},
    {'name' => 'name3', 'age' => 23},
  ],
  'comment' => [
    "This is not 'sanitized' data.",
    XTemplate::SanitizedString["This is 'sanitized' data."],
    Comment.new("This is not 'sanitized' data."),
    XTemplate::SanitizedString[Comment.new("This is 'sanitized' data.")],
  ],
}

text = <<EOF
<?xml version="1.0" encoding="EUC-JP"?>
<document xmlns:xt="http://xtemplate.sourceforge.net/xtemplate">
  <comment xt:id="comment"></comment>
  <comment id="foo">This attribute is not regarded as a data ID.</comment>
  <members>
    <member xt:id="members">
      <name xt:id="name" />
      <age xt:id="age" />
    </member>
  </members>
</document>
EOF

t = XTemplate::XMLTemplate.new(text)
print(t.expand(data))