In total the tree has {count($root//QObject)} QObject instances.

Order by occurrence, the QObjects are:

{ for $i in $root/preceding-sibling::metaObjects/metaObject let $count := count($root//QObject[@className eq $i/@className]) stable order by $count descending return if($count > 1) then
1. {string($i/@className), $count} occurrences
else () }

# Properties

{ (: For each QObject, we create a table listing : the properties of that object. :) for $object in $root//QObject return (

## {let $name := string($object/@objectName) return if(string-length($name)) then $name else "[no name]", '(', string($object/@className), ')'}

,

Property Name | Value
{ $object/@*/
{ name() } | { if(data(.)) then string(.) else "N/A" }
}

) }