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
  2. 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), ')'}

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