xsl:system-property() introduces dynamic typing into XPath data model?

The XSLT extenstion function "system-property()" (XSLT 12.4) is
defined with a return type of "object":

    object system-property(string)

As far as I can tell, this is the only instance in XPath and XSLT
where the return type cannot be explicitly known during parsing,
but instead must be dynamically determined at run-time.

This makes implementing a type-safe XPath expression parser/evaluator
_significantly_ more complicated.

The example properties shown in the description of system-property() are:
    xsl:vendor		-- a string
    xsl:vendor-url	-- a string
and
    xsl:version		-- a number
Clearly, the return-type of system-property() has been defined as
"object" to allow xsl:vendor(-url) and xsl:version to co-exist.

The cost seems high, though, given that by restricting the return type to
be "string" provides _almost_ identical functionality; the only situation
where it would differ is when evaluating an XPath expression such as:
    system-property("xsl-version") == 1
    (i.e. the string "1.0" is not the same as the string "1")
 -- which is unfortunate, although perhaps a small cost.

Given that allowing dynamic typing significantly weakens the type-safety
of the XPath model, would the XSLT editors consider changing the definition
of system-property() to:

    string system-property(string)

??

Michael Fuller
____________________________________________
http://www.mds.rmit.edu.au/~msf/
Multimedia Databases Group, RMIT, Australia.

Received on Thursday, 3 February 2000 22:42:15 UTC