SELECT DISTINCT xd.docid,xd.docname,xd.doctype,xd.date_created, xd.date_updated, xd.rev
  FROM xml_documents xd, xml_nodes xn
 WHERE xd.rootnodeid = xn.rootnodeid 
   AND UPPER(xn.nodedata) LIKE '%'
   AND (
         lower(xd.user_owner) LIKE 'public'
         OR
         (
           xd.docid IN
               (
                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
               )
            AND xd.docid NOT IN
               (
                 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 
               )
         )
      )
/