xml - Extracting part of XMLType in PL/SQL because of repeating node inside another repeating mode -
 have xmltype object , want extract opening times table.
<workspace>   <title>workspace1</title>   <item>     <day>1</day>     <openingtime>8:00</openingtime>     <closingtime>12:00</closingtime>   </item>   <item>     <day>1</day>     <openingtime>13:00</openingtime>     <closingtime>18:00</closingtime>   </item> <workspace> <workspace>   <title>workspace2</title>   <item>     <day>1</day>     <openingtime>9:00</openingtime>     <closingtime>14:00</closingtime>   </item>   <item>     <day>3</day>     <openingtime>12:00</openingtime>     <closingtime>16:00</closingtime>   </item> <workspace>   i use like:
select extractvalue(value(p),'workspace/item/day/text()') day       ,extractvalue(value(p),'workspace/item/openingtime/text()') open       ,extractvalue(value(p),'workspace/item/closingtime/text()') close       table (xmlsequence(extract(y,'workspace'))) p       extractvalue(value(p),'/workspace/title/text()') 'workspace1';   where y xmltype above. won't work, because still find more 1 item node. need extract element values title workspace2 (values 1, 9:00, 14:00, 3, 12:00, 16:00). if extract not value, whole part of xmltype. ideas? 
 thanks, michal
with @thinkjet tricks query may this
with x (   select      xmltype('        <workplaces>              <workspace>           <title>workspace1</title>           <item>             <day>1</day>             <openingtime>8:00</openingtime>             <closingtime>12:00</closingtime>           </item>           <item>             <day>1</day>             <openingtime>13:00</openingtime>             <closingtime>18:00</closingtime>           </item>         </workspace>         <workspace>           <title>workspace2</title>           <item>             <day>1</day>             <openingtime>9:00</openingtime>             <closingtime>14:00</closingtime>           </item>           <item>             <day>3</day>             <openingtime>12:00</openingtime>             <closingtime>16:00</closingtime>           </item>         </workspace>        </workplaces>        ') xfield   dual ) select "day", "openingtime", "closingtime" xmltable('$doc//workspace[title=$workspace_filter]/item'               passing (select xfield x) "doc",                       ('workspace1') "workspace_filter"                columns "openingtime" path '//openingtime',                        "closingtime" path '//closingtime',                        "day" path '//day')      
Comments
Post a Comment