- From: Éric Bischoff <e.bischoff@noos.fr>
- Date: Sat, 26 Oct 2002 11:38:59 +0200
- To: "Nikolai Grigoriev" <grig@renderx.com>, <www-xsl-fo@w3.org>
- Cc: <xsl-editors@w3.org>
> The overall impression is that the respective part of the spec
> is still underdeveloped: XPath-like expression syntax is mixed
> to CSS data types, but no tight integration was made. Data type
> definitions in Section 5.11 (copied from CSS) refer to the string
> representation of data tokens as if there were no expressions
> at all: there is no information about mapping of productions
> in 5.9 to property data types.
Even worse : some productions do not match the rest of the document. For
example, the production for a function does not admit whitespace, while at
several other places whitespace is admitted before '(' or around the
arguments.
> Therefore, I am inclined to believe that extra quotes shall be
> excluded in both integers and URIs. "'url(...)'" is a Literal
> whose value is 'url(...)'; it naturally maps to <string> datatype
> that is a different datatype fom <uri-specification>.
Yes, and that is quite natural: one must have a way to quote data for them not
to be interpreted, as function or as anything else. Saying "'5pt'" is a way
for an user to pass the <string> made of the characters '5' 'p' 't' and not a
<length>. It is very nice to have a quoting process that disables
interpretation, it can always be useful.
> Unless
> a conversion is explicitly permitted by the spec, these two
> should be kept separate.
Yes.
I strongly push forward an in-depth normalization of all the data types,
functions and syntax stuff, so that :
- productions match data types, functions and operators
- there is a better separation between lexical analysis and syntax analysis
- data types (the things you can communicate with functions like
from-parent()) are clearly distinguished from the initialization constructs.
- what looks like a function is a function, what looks like an operator is an
operator, and so on
- perharps we even get rid of the implicit conversions mechanism and
explicitly list all the allowed argument types for all functions.
Such an in-depth normalization would allow to get rid of the many complex
explanations that currently exist to explain that <angle>s are in fact
<string>s and that <percentage>s are in fact <length>s or <number>s (just to
take two examples).
Let's take an example to illustrate what I mean. A construct that keeps
puzzling me is the <percentage> "data type".
<percentage> is described as a data type, therefore one could imagine that
from-parent() could return "50%" for example. But it is specified at several
places that percentages are evaluated first, so one may think it just as an
initialization construct, and pass a <length> or <number> through the
functions. Excepted that in a few properties it seems possible to pass
percentages (for example background-position-horizontal) according to the
description of the property. So at the end what is it? A real data type or
just an initialization construct?
Such a normalization could be for XSL-FO 2.0, as it might introduce tiny
differences between what was valid and what becomes valid. It would make the
specification much less subtile and much less subject to interpretation.
Implementers would benefit from it as it would make engines much simpler and
robust, and end users would benefit from it as they would retrieve widely
accepted notions as basic data types.
--
- Do you know the four basic nutrition groups?
- Errr... Hamburger, soda, French fries and dessert?
Received on Saturday, 26 October 2002 05:38:18 UTC