XQuery is also useful when reshaping XML content. A common use for this feature is to restructure data into a display oriented dialect of XML, such as XHTML for presentation in a web browser.
Again, begin with the same value query seen earlier, modify it using XQuery and generate an XHTML version of the result suitable for display in a web browser:
dbxml> query '<html><body> <ul> { for $part in (collection("parts.dbxml")/part[@number > 100 and @number < 105]) return <li>{$part/description/text()}</li> } </ul></body></html>' Query - Starting eager query execution Query - parts.dbxml - V(@number,>,'100') : [2899] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ... Query - parts.dbxml - V(@number,<,'105') : [105] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... Query - parts.dbxml - n(V(@number,<,'105'),V(@number,>,'100')) : [4] 103 104 105 106 Query - Finished eager query execution, time taken = 22.561ms 1 objects returned for eager expression '<html><body> <ul> { for $part in (collection("parts.dbxml")/part[@number > 100 and @number < 105]) return <li>{$part/description/text()}</li> } </ul></body></html>' dbxml> print <html><body><ul> <li>Description of 101</li> <li>Description of 102</li> <li>Description of 103</li> <li>Description of 104</li> </ul></body></html>
The following shows the previous HTML as displayed in a web browser:
This XQuery introduces the XQuery FLWOR expression (For, Let, While, Order by, Return — sometimes written as FLWR or FLOWR). Note that XPath is still used in the query. Now, however, it is part of the overall FLWOR structure.