2

Here is an example of the XML I'm trying to get some values from:

<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 "outputFormat" parameter values for operation "GetFeature" using XMLTABLE in Oracle 10GR2.

I've tried various things but they either gave me no results or all. Here is 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 much appreciated.

1 Answer 1

2

Found an 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 the parent nodes.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.