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:

<br />
#!/usr/bin/env ruby<br />
require 'nokogiri'<br />
require 'terminal-table'</p>
<p>@tags = {}<br />
def recurse_tags(node)<br />
	if @tags.member? node.name<br />
		@tags[node.name] += 1<br />
	else<br />
		@tags[node.name] = 1<br />
	end<br />
	node.elements.each { |e|  recurse_tags(e)}<br />
end</p>
<p>doc = Nokogiri::XML.parse(File.open(ARGV[0]))<br />
recurse_tags(doc.root)<br />
table = Terminal::Table.new :title =&gt; 'XML-Elemente', :headings =&gt; ['Name', 'Anzahl'], :rows =&gt; @tags.sort<br />
table.align_column(1, :right)<br />
puts table</p>
<p>