Re: Display Property Suggestion

On Sat, 31 Oct 1998, Christian Kaufhold wrote:
> For replaced elements (not :before and :after), <counter> and quotes are
> not allowed - I don't think it makes sense. So it looks like this:
That`s a bit of an arbitary limitation. Why should "attr()" be allowed but
not "quote"?! How would you quote the attribute?

And why make a distinction between the values allowed for :before and
normal elements?

Don`t forget that we have no way of knowing what future XML lanuage will
be like, and authors may well choose to write <QUOTE text="The quote"/>
which requires `content` to accept quotes to display content (note, I
disagree with this use, but there is no reason why we should limit
others).

>    [ [ <string> | <uri> | attr(X) ]* ,]*
>      [ <string> | attr(X) ]*
>      | inherit
> 
> This way, you
> a) have to provide an alternative without an uri, so that something
> reasonable is always displayed,
Actually, what you quote would allow a completely blank value (you
probably meant to use "+" not "*" on the second line).

However, this is actually a _bad_ thing. There are some decorative images
that *must not* have alternative text, sicne it makes no sense to litter
the text browser with irrelevant descriptions of stars and bullets or
whatever. Corner graphics, for example.

> b) the first uris can also be combined with text.
How do you render replaced content with text?!

The whole point of replaced content is that it`s unrelated to the outside
document, as it were, being merely a box as far as the renderer is
concerned. If you have attached text, you then have to define how it is
rendered, and the only sensible way I see is the way that `content` is
*currently* rendered, that is, *not* as replaced content.

Originally I was going to suggest allowing text as well as <uri>, in
fact, but I could not see any logical way of rendering it.

Another problem is that the whole point of having multiple values is that
if one cannot be drawn then you fall onto the next one, until you get to
the last value in the `content` list, which is text-based (or a mixture
of text and uri). If you allow text first, as your suggestion does, then
it allows for the content value " attr(alt), uri(xyz) ", which would be
pointless (the uri would *never* be shown) while still being valid.

>> Yes, this is nice, although we don't need a keyword since we can just
>> say (as you did above) that an empty content is equivalent to drawing
>> the element's content.
> I would still suggest to use some keyword, because I think a list that
> ends with a comma is ugly, and this syntax might easily lead to
> mistakes.
Fair enough.

In that case I suggest

  [ <uri> "," ]*
  [ [ <string> | <uri> | <counter> | attr(X) | open-quote |
    close-quote | no-open-quote | no-close-quote ]+ | auto ]
    | inherit ]

...so we only allow uris first, which results in the element becoming a
replaced element with that uri, trying each one in turn until a supported
one is found, and failing that the content property works as it does now,
except if the "auto" keyword is used, which indicates that the content of
the property as specified by the document should be used.

 * { content: auto; }
 IMG { content: uri(attr(src)), attr(alt); }
 Q:before { content: open-quote; }
 Q:after { content: close-quote; }
 OBJECT { content: uri(attr(data)), auto; }
 IFRAME { content: uri(attr(src)), uri(attr(longdesc)), auto; }


-- 
Ian Hickson

Received on Sunday, 1 November 1998 10:41:57 UTC