W3C home > Mailing lists > Public > www-style@w3.org > September 1999

Re: CSS Namespaces: Need multiple namespaces!

From: Ian Hickson <py8ieh@bath.ac.uk>
Date: Wed, 29 Sep 1999 15:31:41 +0100 (BST)
To: "L. David Baron" <dbaron@fas.harvard.edu>
cc: peterl@netscape.com, www-style@w3.org
Message-ID: <Pine.GSO.4.04.9909291514430.28123-100000@mary.bath.ac.uk>
On Wed, 29 Sep 1999, L. David Baron wrote:

>> In the CSS3 namespace draft, a namespace prefix can be associated
>> with only a single namespace at a time.
> I did actually already mention this problem [1].

Oops. I must have missed that when I did my www-style catch-up (I lost
two weeks' worth of mail around that time due to quota problems...).


> I did so at a time when XHTML only used one namespace, though.
> Multiple namespaces for the same vocabulary bug me...

I agree; but as devil's advocate I suppose one could argue that they
are not the same vocabulary. One may be a subset of another, but they
are not actually the same. For example, one allows <font> inside <p>,
whereas another does not. 

When|If Schemas are pointed to by namespace URIs (as suggested in
various packaging ideas recently), then namespaces will fill basically
the same role as PUBLIC/SYSTEM FPIs/DTDs, and so n (where here n=3)
namespaces will become a necessity.


>> I suggest that the @namespace syntax be extended to allow an
>> arbitrary number of url()s. Comments?
> As I mentioned in [1], this causes some problems with the attr()
> pseudo-function.

Aha. It would appear, however, that you have already suggested a
solution (namely, using the first matching attribute) and this
solution would seem to be fine.

If one wanted a particular attribute, then one could explicity qualify
it. For example, with this document:

   <!DOCTYPE x>
   <x xmlns:n="NewsML" xmlns:g="GuideML" xmlns:h="HTML4-s">
      <y title="Well" n:title="Hello" g:title="Exciting" h:title="World"> </y>
   </x>

...and this CSS:

   @namespace texts url(HTML4-s) url(NewsML) url(GuideML);
   @namespace html4s url(HTML4-s);
   * { tooltip: attr(title); } /* uses "Well" */
   * { tooltip: attr(html4s|title); } /* uses "World" */
   * { tooltip: attr(texts|title); } /* uses "Hello" because its the first match */

...you can see that attr(unqualified) gives the element's attribute,
attr(nslist:attr) gives the first matching attribute from those
namespaces given by "nslist", and attr(ns:attr) gives the attribute
which matches the one namespace.

As for default values, see section 5.8.2 of CSS2:

# 5.8.2 Default attribute values in DTDs
#
# Matching takes place on attribute values in the document tree. For
# document languages other than HTML, default attribute values may be
# defined in a DTD or elsewhere. Style sheets should be designed so
# that they work even if the default values are not included in the
# document tree.

Since both David and I have independently suggested this, it _must_ be
a good idea... ;-)

-- 
Ian Hickson
: Is your JavaScript ready for Nav5 and IE5?
: Get the latest JavaScript client sniffer at 
: http://developer.netscape.com/docs/examples/javascript/browser_type.html
Received on Wednesday, 29 September 1999 10:31:46 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:00 GMT