(It would not be exactly overloading, because of the special sugared syntax known to the parser, but it could look like overloading, and be intuitive to the user.)
If you have convenient access to Oracle to check compatibility, could you compare this query?
SELECT * FROM XMLTABLE('.' PASSING '<sale hatsize="7" customer="alice" taxable="false"/>' COLUMNS a boolean PATH 'string("cat" < "dog")', b boolean PATH 'string("cat" > "dog")', c boolean PATH 'string(sale/@taxable = false())');
(I suspect in Oracle it would also work without the string() wrappings, but just to make it easy, I think this way it will work in both Oracle and PG—that is, not error, though results may differ.)
I have a access to too old 11.2 Oracle. There I had to modify query because there is not boolean type. I replaced bool by int, but I got a error
ORA-19224:XPTY-004 .. expected node()*, got xs:string - it doesn't work with/without string() wrappings.
The problem is in last line - the expression "sale/@taxable = false()" is not valid on Oracle. Using string() wrapping is a issue, because it returns "true", "false", but Oracle int doesn't accept it.