- From: Mike Schilling <mschilling@edgility.com>
- Date: Tue, 26 Mar 2002 15:00:55 -0500 (EST)
- To: www-xpath-comments@w3.org
Message-ID: <DFF2AC9E3583D511A21F0008C7E6210602679CCE@daemsg02.software-ag.de>
From: "Kay, Michael" <Michael.Kay@softwareag.com>
To: "'Mike Schilling'" <mschilling@edgility.com>, www-xpath-comments@w3.org
Date: Mon, 18 Mar 2002 12:57:19 +0100
Subject: RE: XPath on encoded SOAP documents
> 3. The structure of the document isn't entirely fixed.
> ...
> > Now what's needed is a construct which finds a child element and:
> > If it's a real element, returns it.
> > If it's a stub (has an href attribute), traverses its
> href link and returns the result.
> > The obvious way to extend XPath to handle this is to introduce a
> special-purpose function. I actually did this (starting with
> standard
> Xalan 2.2), calling it "href". This works reasonably well
> when only one
> link needs traversing:
> > href(n:getOrderStatusResponse, "shipToInfo")
I expect you're aware that both XSLT 2.0 and XQuery 1.0 allow user-defined
functions to be used in XPath expressions. I expect other XPath hosts will
do the same.
As does XPath 1.0, unless I'm misinterpreting:
This document defines a core function library that all XPath
implementations must support (see [4 Core Function
Library]). For a function in the core function library, arguments
and result are of the four basic types. Both XSLT
and XPointer extend XPath by defining additional functions; some
of these functions operate on the four basic
types; others operate on additional data types defined by XSLT and
XPointer.
> > But it gets ugly fast as the number of steps increases:
> > href( href( href( n:getOrder, "n:order" ), Items)[1], shipToInfo)
XPath 2.0 allows a function call to appear as a step in a path, so you
should be able to write href(..)/href(..)/href(..)
Thanks; this is the point I had missed about General Steps. It's an
extension of XPath 1.0, in which function calls could only appear as the
first step in a path.
[19] PathExpr ::= LocationPath
| FilterExpr
| FilterExpr '/'
RelativeLocationPath
| FilterExpr '//'
RelativeLocationPath
This does solve the problem with acceptable syntax.
As SOAP use is growing by leaps and bounds, and the encoded format is
currently the more popular of the two, I suggest you consider adding such a
function to the standard. It adds almost nothing to the cost of
implementing XPath.
Received on Tuesday, 26 March 2002 17:06:06 UTC