- From: Peter Fankhauser <fankhaus@darmstadt.gmd.de>
- Date: Mon, 8 Oct 2001 15:17:06 +0200
- To: "Filippo Furfaro" <furfaro@si.deis.unical.it>, <www-ql@w3.org>
- Message-ID: <KNEAKBHGPLOADKCAOIFNGEPPCEAA.fankhaus@darmstadt.gmd.de>
It appears that you ask for "regular path expressions"; e.g. sth. like "parts/part*/number", to retrieve all "number"-elements ancestor of "parts" and reachable exclusively by part. Indeed XPath does not support regular path expression. Personally, I haven't seen any convincing use cases for regular path expressions for querying XML (although there exists a good deal of database literature on processing regular path expressions (deciding about containment, building specialized indices etc.). A reasonable approximation for the path expression above is: "parts//part/number | parts/number". Homework: consider for which XML-documents this approximation returns false hits. Because XQuery supports arbitrary recursive functions, you can express regular path expressions by means of a user defined function: E.g., you can express "parts/part*/number" as follows: define function myparts( xs:AnyTree* $x ) returns xs:AnyTree* { for $y in $x return typeswitch ($y) as $y case element part { xs:AnyTree*} return myparts(nodes($y)) case element number {xs:AnyTree*} return $y default return () } for $v in /parts/* return myparts($v) Homework: try to use XSLTs template mechanism (with recursion via "apply-templates") to accomplish sth. very similar. Hope this clarifies, Peter (speaking for myself) -----Original Message----- From: www-ql-request@w3.org [mailto:www-ql-request@w3.org]On Behalf Of Filippo Furfaro Sent: Montag, 8. Oktober 2001 12:26 To: www-ql@w3.org Subject: About closure operator in XPath and X-Query Is it possible to express the closure (*) operator when specifying a path? The // operator provided by XPath seems too weak. For instance, how can I express a query that verifies if there is a path of any length between two elements going only through <tag1> elements? thanks for your help Filippo
Received on Monday, 8 October 2001 09:14:32 UTC