Re: Use select for viewport too

Hi Norm,

Norman Walsh wrote:
> 2. What's more, they have to translate between them if they want to
> apply similar processing with for-each and viewport. Consider a
> pipeline that makes chunks out of a book:
> 
>   <p:for-each select="//chapter|//chapter/section" ...>
> 
> Now the pipeline author wants to use a viewport to build the
> ToC, replacing each chunked part with some sort of link. They
> can't just use the select expression, they have to do something
> else, like:
> 
>   <p:viewport match="chapter|section[parent::chapter]" ...>
> 
> I think that's a disaster.

Users can still write

   <p:viewport match="//chapter|//chapter/section" ...>

That's a legal pattern. The fact that the // doesn't do anything doesn't 
mean the users can't use it.

As I discussed in my last mail, with the constraints we have on select 
expressions (must have a root node as the context node; must return an 
element), there are relatively few expressions that don't map 
immediately on to patterns.

I suppose one thing that might be surprising is that:

   <p:for-each select="chapter" ...>

will identify the <chapter> document element, whereas

   <p:viewport match="chapter" ...>

will identify <chapter> elements throughout the document (well, assuming 
  that they don't have an ancestor <chapter> element, that is).

> 3. We now require implementors to support both kinds of semantics
> which, with my implementors hat on, is an unpleasant burden. I have a
> library for doing select, I plan to do some analysis to stream some
> expressions, but short of linking to an XSLT impl or writing my own
> impl from scratch, I don't know how to get match semantics

Patterns are defined in the XPath spec in terms of expressions, so it 
shouldn't be too much of a burden to implement it. Add a "//" at the 
front; evaluate it as an expression; see if the node that you're 
examining is in the node set that you got.

But overall I think I agree that it makes more sense to use expressions 
all over (though I'm still going to argue that the attribute on 
<p:viewport> needs to be called something other than 'select' to reflect 
its different semantic).

Cheers,

Jeni
-- 
Jeni Tennison
http://www.jenitennison.com

Received on Friday, 3 November 2006 16:39:37 UTC