- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Wed, 24 May 2006 21:07:39 +0100
- To: public-xml-processing-model-wg@w3.org
Hi Norm, Norm Walsh wrote: > My overriding concern is simplicity of design and implementation. I > want the simplest thing that could possibly get the job done 80% of > the time. I guess I'm more concerned about usability than simplicity of implementation (there are relatively many users compared to implementers, and implementers only have to implement once, whereas users have to use all the time). Simplicity of design obviously helps both implementation and usage. > I think evaluating an XPath expression over a single document is > simpler. And I think it's all that's needed 80% of the time. And > there's an obvious way to deal with the other 20%. > > If we say that XPaths are evaluated in the context of a single > document, then the XPath evaluator can be thought of as a little black > box. You pass it a document and an expression and it returns > something. (Granted, you have to replace variable and parameter > references with their current literal values before you call the black > box.) Ahh, OK, it sounds as if we draw the lines around the XPath black box somewhat differently. I can quite understand why you'd find the suggestion of using variables to reference input documents complex if you think of it in terms of replacing variable references with literal values prior to passing the expression to the XPath black box. I'm also thinking of the XPath evaluator as a black box, but I'm looking at setting the evaluation context for XPath as defined at [1]. In XPath 1.0 the context consists of: * a node (the context node) * a pair of non-zero positive integers (the context position and the context size) * a set of variable bindings * a function library * the set of namespace declarations in scope for the expression and: "The variable bindings consist of a mapping from variable names to variable values. The value of a variable is an object, which can be of any of the types that are possible for the value of an expression, and may also be of additional types not specified here." So in my conception (and, I'd argue, the XPath specifications), the XPath black box accepts a bunch of name/value pairs as variable bindings, and all that we (as users of the XPath spec) have to worry about is what values get assigned to what names. The values can be anything, including document nodes (root nodes) and document sequences (node sets): they're not constrained to values that can be represented literally within the XPath expression. > If we introduce a mechanism that allows XPath expressions to refer to > multiple documents then the XPath evaluation has to be done by some > part of the system that has much more intimate knowledge of the state > of the pipeline execution, of the documents that are currently > identified by labels, and how to get access to them. I'll hold my hands up and admit that I'm one of the rare bods in this Working Group who *hasn't* actually implemented a pipeline engine. But at the *spec* level, I'm pretty sure that the right way to describe how we use XPath is to describe how the various parts of the evaluation context are set, in the same way as XSLT does with XPath [2]. The XPath evaluation engine doesn't need to know anything aside from the information provided in this evaluation context. Cheers, Jeni [1] http://www.w3.org/TR/xpath#section-Introduction [2] http://www.w3.org/TR/xslt#section-Expressions -- Jeni Tennison http://www.jenitennison.com
Received on Wednesday, 24 May 2006 20:07:53 UTC