[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] dynamic xpath eval in xquery?
- From: John Snelson <john.snelson@oracle.com>
- To: James Fuller <james.fuller.2007@gmail.com>
- Date: Tue, 09 Oct 2007 12:21:14 +0100
Hi James,
There is no standard function in XQuery that will evaluate another
XQuery stored in a string - although some XQuery implementations provide
extension functions to do this.
Depending on your needs, it's not too hard to write your own function to
handle simple cases, like this:
declare function local:evalPath($path as xs:string, $xml as node()*) as
node()*
{
local:evalPathImpl(tokenize($path, "/"), $xml)
};
declare function local:evalPathImpl($steps as xs:string*, $xml as
node()*) as node()*
{
if(empty($steps)) then $xml
else if($steps[1] = "") then local:evalPathImpl(subsequence($steps,
2), $xml/root())
else if(starts-with($steps[1], "@")) then
local:evalPathImpl(subsequence($steps, 2), $xml/@*[name() =
substring($steps[1], 2)])
else local:evalPathImpl(subsequence($steps, 2), $xml/*[name() =
$steps[1]])
};
let $xml := document { <test><a><b attr="value"></b></a></test> }
let $xpathstring := "/test/a/b/@attr"
return local:evalPath($xpathstring, $xml)
John
James Fuller wrote:
> given in xquery v1.0
>
> let $xml := <test><a><b></b></a>
>
> let $xpathstring := ''test/a/b"
>
> return $xml/$xpathstring
>
> I know this is not possible ;) ... though I am having a brain cramp...
>
> wondering what the best approach for doing this type of thing in XQuery.
>
> tia, Jim Fuller
>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
--
John Snelson, Oracle Corporation
Berkeley DB XML: http://www.oracle.com/database/berkeley-db/xml
XQilla: http://xqilla.sourceforge.net
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]