According to this whitepaper:
http://www.oracle.com/technetwork/database/features/xmldb/xmlqueryoptimize11gr2-168036.pdf
Starting 11gR2, Oracle has deprecated many older proprietary mainly XPath 1.0 based operators in favor of standards based XQuery syntax, as listed in Table 1 below.
OLD ORACLE PROPRIETARY SYNTAX --> NEW XQUERY SQL/XML BASED SYNTAX
extract() --> XMLQuery()
extractValue --> XMLCast(XMLQuery())
existsNode() --> XMLExists()
As I was just getting comfortable with the old syntax this gets me slightly worried. I tried to look into the new syntax but that looks like an absolute jungle of text compared to the very easliy readible Xpath expressions. But that could well be just me not quite understanding the XQuery syntax.
What we mainly do with XML in our application is get some XML from webservices and extract values from it. A typical example is:
select extractvalue(l_xml
,'/kennisgevingsBericht/body/PRS[position()=1]/PRSADRINS/@xsi:nil'
,'xmlns="http://www.egem.nl/StUF/sector/bg/0204" xmlns:StUF="http://www.egem.nl/StUF/StUF0204" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
into l_waarde1
from dual;
What would this look like using the Xquery syntax?