def getNodesByXPointer(pointer)
if pointer !~ /^([a-z]+)\(([^)]*)\)(\.(.+))?$/
raise "invalid XPointer: \"#{pointer}\""
end
keyword = $1
args = $2
rest = $4
case keyword
when 'root', 'origin', 'id', 'html'
src = _getNodeByAbsoluteLocationTerm("#{keyword}(#{args})")
else
src = _getNodeByAbsoluteLocationTerm("root()")
rest = pointer
end
ret = NodeList.new
if src.nil?
elsif rest.nil?
yield src if iterator?
ret << src
else
src._nodesByLocationTerms(rest) do |node|
yield node if iterator?
ret << node
end
end
ret
end