Welche Elemente, wie oft?

Auswertung einer DocBook-Datei Welche XML-Elemente gibt es in einem größeren DocBook-Projekt und wie oft kommen sie vor? Auf die Schnelle ist mir kein passendes Werkzeug zur Beantwortung der Fragen eingefallen. Das kleine Skript hier tut es:

#!/usr/bin/env ruby
require 'nokogiri'
require 'terminal-table'

@tags = {}
def recurse_tags(node)
	if @tags.member? node.name
		@tags[node.name] += 1 
	else
		@tags[node.name] = 1 
	end
	node.elements.each { |e|  recurse_tags(e)}
end

doc = Nokogiri::XML.parse(File.open(ARGV[0]))
recurse_tags(doc.root)
table = Terminal::Table.new :title => 'XML-Elemente', :headings => ['Name', 'Anzahl'], :rows => @tags.sort
table.align_column(1, :right)
puts table