2

以下は、いくつかの値を取得しようとしている XML の例です。

<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>

Oracle 10GR2 で XMLTABLE を使用して、"GetFeature" 操作の "outputFormat" パラメータ値にアクセスしたいと考えています。

私はさまざまなことを試しましたが、結果が得られないか、まったく結果が得られませんでした。すべての値を返す例を次に示します。

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

どんな助けでも大歓迎です。

4

1 に答える 1

2

答えが見つかりました:

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;

.. xpath 式を使用して親ノードにアクセスします。

于 2012-01-06T09:54:45.117 に答える