# -*- ruby -*-
#
# Select data with '[node]', which selects all nodes having 'node'.
#

require 'xtemplate'

data ={
  'links' => [
    {'url' => "url1", 'name' => "anchor1"},
    {'url' => "url2", 'name' => "anchor2"},
    {'url' => "url3"                     },
    {                 'name' => "anchor4"},
  ]
}

text = <<EOF
<?xml version="1.0" encoding="EUC-JP"?>
<html>
<body>
  Links which has 'name' field.
  <ul>
    <li id="links[name]/name"></li>
  </ul>

  Links which has no 'name' field.
  <ul>
    <li id="links[not name]/url"></li>
  </ul>

  Links which has both of 'name' and 'url' fields.
  <ul>
    <li id="links[name and url]">
      <url id="url" /><name id="name" />
    </li>
  </ul>
</body>
</html>
EOF

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