#!/usr/bin/ruby
$LOAD_PATH.unshift("../../src", "..")
require 'bdbxml'
include BDB
File::unlink("exa.dbxml") rescue nil
man = XML::Manager.new
con = man.create_container("exa.dbxml", XML::INDEX_NODES)
upd = man.create_update_context
con.add_index("", "foo", "node-element-equality-string")
con.add_index("http://www.example.com/schema", "foo", "node-element-equality-string")
con.add_index("", "foo", "node-element-presence")
con.add_index("http://www.example.com/schema", "foo", "node-element-presence")
con.add_index("", "len", "edge-attribute-equality-decimal")
con.add_index("", "len", "edge-attribute-presence")
con.add_index("", "date", "edge-element-equality-date")
con.put("docA", <<-EOT, upd)
hello
charlie
brown
aNd
Lucy
EOT
con.put("docB", <<-EOT, upd)
hello
charlie
brown
aNd
Lucy
EOT
con.put("docC", <<-EOT, upd)
tall guy
30 yds
30 yds
five feeet
point two
five feet
EOT
con.put("docD", <<-EOT, upd)
2005-08-02
2003-06-12
1005-12-12
1492-05-30
2000-01-01
1984-12-25
EOT
puts "content"
con.each do |value|
puts "\n\tDocument #{value.to_document.name}"
puts value
end
puts "\nnode-element-presence\n"
xil = man.create_index_lookup(con, "", "foo", "node-element-presence")
["", "http://www.example.com/schema" ].each do |uri|
xil.node_uri = uri
puts "\tnode : #{xil.node.inspect}"
xil.execute.each {|p| puts "\t\t#{p}"}
end
puts "\nnode-element-equality-string : charlie"
xil = man.create_index_lookup(con, "", "foo", "node-element-equality-string")
[[XML::IndexLookup::LT, "<"], [XML::IndexLookup::LTE, "<="],
[XML::IndexLookup::GT, ">"], [XML::IndexLookup::GTE, ">="]].each do
|comp, rep|
xil.low_bound = ["charlie", comp]
puts "\n low_bound : charlie #{rep} #{xil.low_bound[0]}"
["", "http://www.example.com/schema" ].each do |uri|
xil.node_uri = uri
puts "\tnode : #{xil.node.inspect}"
xil.execute.each {|p| puts "\t\t#{p}"}
puts "\tnode : #{xil.node.inspect} -- reverse"
xil.execute(nil, XML::REVERSE_ORDER).each {|p| puts "\t\t#{p}"}
end
end
puts "\nedge-attribute-equality-decimal : 40"
xil = man.create_index_lookup(con, "", "len", "edge-attribute-equality-decimal")
xil.parent = ["", "baz"]
[[XML::IndexLookup::LT, "<"], [XML::IndexLookup::LTE, "<="],
[XML::IndexLookup::GT, ">"], [XML::IndexLookup::GTE, ">="]].each do
|comp, rep|
xil.low_bound = [XML::Value.new(XML::Value::DECIMAL, 40), comp]
puts "\n low_bound : len #{rep} #{xil.low_bound[0]}"
puts "\tnode : #{xil.node.inspect}"
xil.execute.each {|p| puts "\t\t#{p}"}
puts "\tnode : #{xil.node.inspect} -- reverse"
xil.execute(nil, XML::REVERSE_ORDER).each {|p| puts "\t\t#{p}"}
end
puts "\nedge-element-equality-date : date == 2003-06-12"
xil = man.create_index_lookup(con, "", "date", "edge-element-equality-date",
XML::Value.new(XML::Value::DATE, "2003-06-12"),
XML::IndexLookup::EQ)
xil.parent = ["", "dates1"]
puts "\tparent = dates1"
xil.execute.each {|p| puts "\t\t#{p}"}
xil.parent = ["", "dates2"]
puts "\tparent = dates2"
xil.execute(nil, XML::REVERSE_ORDER).each {|p| puts "\t\t#{p}"}