[exslt] Extension candidates

Dimitre Novatchev dnovatchev at yahoo.com
Mon Dec 15 07:38:15 MST 2008


> > Dr. Kay, Colin,  and Altova developers, will it be too 
> > difficult to implement the following principle:
> > 
> >  "The processor will try to recover of a typing error by using
> >    dereferencing when one of the ill  arguments is a reference".
> > 
> 
> Several points:
> 
> (a) that's not how I would express the rule. The natural way to write it
> would be as an extension to the (poorly-named) function conversion rules in
> XPath section 3.1.5. Something like:
> 
> * if the expected item type is an atomic type or node type, then the
> supplied sequence is _dereferenced_
> 
> where dereferencing, like atomization, is defined as an operation that takes
> any sequence and replaces any references in the sequence by the sequences
> that they reference, recursively.
> 
> This rule should apply before the atomization rule.


+1



> 
> (b) I would think very carefully before implementing such an extension to
> the function calling semantics. Although the specs say very little about
> what is allowed and what isn't when it comes to extension types. I think I'd
> be happier, while we're still in the business of defining extensions, of
> making the dereference operation something that the user has to invoke
> explicitly; one can always add the implicit behaviour later when integrating
> the extensions into the language.

It seems logical to have an operation *confirming the use of a ref".

  useRef(ref)

that will increment a reference counter.

The rule will be that the user should first use useRef() on a ref before copying this to another location -- for every single copying of a ref. 

The result of dereferencing a copy of a ref that was not preceded by useRef() are unpredictable.

Or it will be even better to combine claiming use and copying in one operation:

   string copyRef(ref)

which returns a string that can be safely dereferenced. The use of "string" here is not important. Anything that can be stored/passed-around is OK.

 
Cheers,
Dimitre


      


More information about the exslt mailing list