for $_outer in collection("/db/Properties")//Document where ($_outer//Document/Data/child::*[local-name()='ServiceClass']/text() = 'DataAccess' and exists($_outer/Data/child::*[local-name()='Plugin']/name)) return { for $plugin in $_outer/Data/child::*[local-name()='Plugin'] return {$plugin/name} {$plugin/description} {namespace-uri($plugin)} treeManagerPlugin { for $elem in $plugin/child::*[local-name()='property'] return {$elem/name/text()} {$elem/value/text()} } }