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 22:46:33 +0100 (BST)
To: Peter Linss <peterl@netscape.com>
cc: www-style <www-style@w3.org>, "L. David Baron" <dbaron@fas.harvard.edu>
Message-ID: <Pine.GSO.4.04.9909292217410.25180-100000@amos.bath.ac.uk>

On Wed, 29 Sep 1999, Peter Linss wrote:
> The real issue here is how namespaces are really going to be used in
> the real world. My takeaway from reading the Namespace Rec is that a
> namespace is *just a name*, the URL doesn't actually point to
> anything and shouldn't be overloaded to point to a schema or DTD or
> anything (except perhaps someday some information about the
> *namespace* not the document where it is used).

Well, this is very much an open issue, but the Schema WG do seem to be
considering using the namespace URI to point to Schemas and whatnot:

   http://www.w3.org/TR/xmlschema-1/composition-tf.html

However, this has no effect on CSS as far as I can tell.

 
> If [the XHTML WG] set a stake in the ground and say "namespaces
> don't have versions or flavors", then having this feature in CSS may
> only lead to more confusion in the namespace arena. Which is
> something I'd like to avoid.

This feature is _not_ only for the case where we have versioned/
flavored namespaces. A much more important reason for CSS to have this
feature is for styling the elements with the same name in several
namespaces. For example, you could have a stylesheet which styled
documents that might have snippets in several other namespaces. If
these namespaces had a common vocabulary subset, then you could do
this:

   @namespace text url(xhtml) url(GuideML) url(ReviewML);

   text|p { margin: 1em 0; } /* paragraphs in all our various text
   markup languages should have 1em margins between them. */

The alternative (and only way with the current draft) is:

   @namespace xhtml url(...xhtml);      
   @namespace guideml url(...GuideML);  
   @namespace reviewml url(...ReviewML);

   xhtml|p, guideml|p, reviewml|p { margin: 1em 0; } /* paragraphs in
   all our various text markup languages should have 1em margins
   between them. */

Now, doing that with a simple type selector this doesn't cause many
problems. But when you have this kind of situation:

   @namespace metadata url(mdspec1) url(mdspec2) url(mdspec3);
   @namespace text url(xhtml) url(GuideML) url(ReviewML);

   text|p[metadata|status~=draft] { background: url(draft.png); }

...expanding that results in six namespace prefixes and nine
selectors! The stylesheet becomes quickly unreadable for a large
number of rules.

Also, adding a new namespace later means editing just one line if
@namespace can take more than one namespace, but a zillion lines if
you have to add a prefix and update every relevant rule.

-- 
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 17:46:35 GMT

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