[Bug 1680] [FS] editorial: 4.12.5 Constructor Functions

http://www.w3.org/Bugs/Public/show_bug.cgi?id=1680





------- Comment #3 from simeon@us.ibm.com  2006-04-21 14:48 -------
Michael:

The XQuery 1.0 document is very clear that the semantics of
constructor functions are the same as a cast. This is the actual
definition:

[Definition: The constructor function for a given type is used to
convert instances of other atomic types into the given type. The
semantics of the constructor function T($arg) are defined to be
equivalent to the expression ($arg cast as T?).]

The semantics of function calls have a lot of things going on which
are not happening for constructor functions, notably the function
conversion rules.

That said, you are right that the normalization rule as currently
written does not deal with namespace normalization. The fix
implemented in the FS document currently adds some english prose to
explain what is going on.

I just realized though that we could write the normalization rule as
follows, making namespace resolution explicit. The second precondition
checks that the QName is the name of an atomic type.

  statEnv |- QName of elem/type expands to expanded-QName
  statEnv |- declare type QName restricts AtomicTypeName
  -----------------------------------------------------------
  statEnv |- [QName(Expr)]_Expr == [Expr cast as QName?]_Expr

[That usage for normalization rules is introduced in Section 3.2.2
Normalization mapping rules.]

That may work better than just some english text. Any suggestion or
preference on this?

- Jerome

Received on Friday, 21 April 2006 14:48:44 UTC