How to select specific values ββfrom XML using Oracle Xquery
Here's an example XML I'm trying to get from the following values:
<ows:Operation name="DescribeFeatureType">
<ows:Parameter name="outputFormat">
<ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="GetFeature">
<ows:Parameter name="resultType">
<ows:Value>results</ows:Value>
<ows:Value>hits</ows:Value>
</ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>
<ows:Value>GML2</ows:Value>
<ows:Value>GML2-GZIP</ows:Value>
<ows:Value>SHAPE-ZIP</ows:Value>
<ows:Value>csv</ows:Value>
<ows:Value>gml3</ows:Value>
<ows:Value>gml32</ows:Value>
<ows:Value>json</ows:Value>
<ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>
<ows:Value>text/xml; subtype=gml/3.2</ows:Value>
</ows:Parameter>
</ows:Operation>
I want to access the values ββof the "outputFormat" parameter for the "GetFeature" operation using XMLTABLE in Oracle 10GR2.
I tried different things but they didn't give me any results or everything. Here's an example that returns all values.
select t.*
from xmltable(xmlnamespaces(default 'http://www.opengis.net/wfs'
,'http://www.opengis.net/gml' as "gml"
,'http://www.opengis.net/wfs' as "wfs"
,'http://www.opengis.net/ows' as "ows"
,'http://www.w3.org/1999/xlink' as "xlink"
,'http://www.w3.org/2001/XMLSchema-instance' as "xsi"
,'http://www.opengis.net/ogc' as "ogc")
,'for $d in //ows:Operation/ows:Parameter/ows:Value
where //ows:Operation/@name = "GetFeature"
and //ows:Parameter/@name="outputFormat"
return $d' passing p_xml columns value varchar2(100) path '/') as t
Any help is greatly appreciated.
+2
source to share
1 answer
Found the answer:
select t.*
from xmltable(xmlnamespaces(default 'http://www.opengis.net/wfs'
,'http://www.opengis.net/gml' as "gml"
,'http://www.opengis.net/wfs' as "wfs"
,'http://www.opengis.net/ows' as "ows"
,'http://www.w3.org/1999/xlink' as "xlink"
,'http://www.w3.org/2001/XMLSchema-instance' as "xsi"
,'http://www.opengis.net/ogc' as "ogc")
,'for $d in //ows:Operation/ows:Parameter/ows:Value
where $d/../../@name = "GetFeature"
and $d/../@name="outputFormat"
return $d' passing p_xml columns value varchar2(100) path '/') as t;
using xpath expression to access parent nodes.
+2
source to share