2012-01-06 3 views
2

Вот пример XML Я пытаюсь получить некоторые значения от:Как выбрать конкретные значения из XML с помощью Oracle XQuery

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

Я хочу, чтобы получить доступ к значениям параметров «OUTPUTFORMAT» для работы " GetFeature ", используя XMLTABLE в Oracle 10GR2.

Я пробовал разные вещи, но они не дали мне никаких результатов или всего. Вот пример, который возвращает все значения.

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 

Любая помощь очень ценится.

ответ

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 выражение для доступа к родительским узлам.