SELECT DISTINCT xd.docid,xd.docname,xd.doctype,xd.date_created, xd.date_updated, xd.rev
  FROM xml_documents xd, xml_nodes xn,
       (
                SELECT docid from xml_access
                 WHERE (
                         (
                           lower(principal_name) = 'public'
                           AND perm_type = 'allow'
                           AND (permission='4' OR permission='7')
                         )
                         OR 
                         (
                           lower(principal_name) = 'public'
                           AND perm_type = 'allow'
                           AND (permission='4' OR permission='7')
                         )
                       )
                   AND subtreeid IS NULL
                 MINUS
                 SELECT docid from xml_access
                  WHERE ( 
                          (
                            lower(principal_name) = 'public'
                            AND perm_type = 'deny'
                            AND perm_order ='allowFirst'
                            AND (permission='4' OR permission='7')
                          )
                          OR 
                          (
                            lower(principal_name) = 'public'
                            AND perm_type = 'deny'
                            AND perm_order ='allowFirst'
                            AND (permission='4' OR permission='7')
                          )
                        )
                    AND subtreeid IS NULL 
       ) xa
 WHERE xd.rootnodeid = xn.rootnodeid 
   AND xd.docid = xa.docid
   AND UPPER(xn.nodedata) LIKE '%'
/