- From: Peter B. West <pbwest@powerup.com.au>
- Date: Fri, 27 Sep 2002 10:55:28 +1000
- To: Paul Grosso <pgrosso@arbortext.com>
- CC: xsl-editors <xsl-editors@w3.org>
Paul,
Thank you for your response. I say this with a sense of complete
hopelessness, but would it not be better to fix XSLT than to break
XSLFO? I know there will be wailing and gnashing of teeth, and there
will probably be non-conforming implementations. However, XSLT 2.0 has
not been finalised yet, so the opportunity exists to fix it. The format
attribute value is surely a literal string, so why not express it that
way? Such a decision would flow on to XSLFO, and the previous situation
would remain correct. Current non-conforming XSLFO implementations
would be in no worse situation, and some consistency would be achieved
across the board.
While we're at it, could you possibly replace <string> in the data types
description with <literal>, and in those situations where the NCName to
string conversion may be invoked, simply allow <literal>|<name>?
In the case of font names like "Times New Roman", it may be necessary to
allow something like NCNAMES. I'm sorry that is a bit vague. I haven't
thought through that particular situation (which was one of the triggers
for my original post).
Peter
Paul Grosso wrote:
> Peter,
>
> Thank you for your comment to xsl-editors@w3.org archived at
> http://lists.w3.org/Archives/Public/xsl-editors/2001OctDec/0043
>
> This question of yours started quite a discussion. Specifically,
> section 5.9.12 Expression Value Conversions allows for the automatic
> conversion of NCNames to strings. This allows, for example, one
> to say font-family="Arial". The expression evaluator should evaluate
> the property value to be an NCName and then realize the datatype of
> the property is <string> and do the automatic conversion.
>
> However, we note that something like format="1" would not, in fact,
> work, since 1 is not an NCName. Therefore, format="1" would actually
> be an error. (The correct syntax would have to be format="'1'".)
> There is no way around this, since format="substring('123',1,1)"
> would be a valid assignment, and format="2-1", while not a valid
> assignment (because it does not evaluate to a string or NCName),
> should get evaluated into the integer 1.
>
> While we could clarify that something like format="1" is invalid,
> the XSL WG figured that no implementor would implement that. (All
> implementations currently accept format="1", and no one expects
> they will stop doing so.) So we wanted to find a compromise that,
> while respecting the XSL expression language, didn't make all
> existing implementations non-compliant. This led us to say that,
> while such is an error, an implementation may recover from this
> by treating the value as a string. (It may signal an error and
> halt, but we doubt may implementations will do that. It may also
> give a warning and continue, or just recover silently.)
>
> Still more interesting is format="1." which would get evaluated
> into the integer 1 and, if then just silently converted to a string,
> would end up being equivalent to format="'1'" instead of format="'1.'"
> as probably intended. This led us to our final solution.
>
> Therefore, the following is our disposition of your above comment:
>
> ---
>
> We DECIDED to add the following Note to the description of the <string>
> datatype in section 5.11:
>
> Given the allowable Expression Value Conversions (section 5.9.12),
> a property value of type <string> must be a quoted value, an NCName,
> or a expression that evaluates to a <string>; anything else (e.g.,
> an integer) is an error. An implementation may recover from this
> error by treating the unevaluated property value as a string.
>
> ---
>
> Please Reply (cc-ing xsl-editors@w3.org) if you wish to make
> an objection to our resolution.
>
> Thank you for your interest in XSL.
>
> Paul Grosso for the XSL FO Subgroup of the XSL WG
>
--
Peter B. West pbwest@powerup.com.au http://www.powerup.com.au/~pbwest/
"Lord, to whom shall we go?"
Received on Thursday, 26 September 2002 20:55:35 UTC