- From: Bert Bos <bert@w3.org>
- Date: Thu, 29 Sep 2005 15:19:48 +0200
- To: www-style@w3.org
A discussion here on the read-only/read-write pseudo-classes and another
with some colleagues prompted me to think about a way to define very
simple templates with CSS...
The use case is an online page you want to edit and save back to the
server (with HTTP PUT, Webdav, or even with FTP) and that has to
conform to a certain format. Imagine, e.g., that the page is from a
wiki, blog, or slide presentation.
Presumably, the server will check what you send back, but assuming that
you are trying to do the right thing, it would be good if the server
could tell your browser/editor in a machine-readable way what changes
are allowed.
In general, a template consists of parts that you cannot edit and other
that you can, plus information about the grammar of those parts. For
example, some part may have only plain text of more than 10 but less
than 100 characters, another accepts all inline HTML elements, yet
another accepts most HTML body elements, except H1 and form elements,
etc.
But that general case is difficult. We don't have a ready made language
to express those grammars, although DTDs and the various XML schema
languages go a long way. But as I'm looking for something as simple as
CSS, I think that general case is out of scope.
Daniel Glazman's NVu, for example, has a simple template system that
just allows you to distinguish elements that cannot be edited and those
that can, and the latter come in four types (I'm sure Daniel will
correct me if I miscounted them...):
1) Exactly one element: you can edit an element's content according to
the DTD
2) Zero or one: you can edit the content or delete the element.
3) Zero or more: you can delete the element, edit its content and also
make copies of the element (and edit their contents).
4) One or more: you can edit the content and make copies but at least
one element must remain.
(The way NVu currently does this is specific to HTML 4.01 Transitional
and the template files themselves aren't valid SGML or XML, so they
cannot be used for the online use case I outlined above.)
So how about a property in CSS3
Name: editable
Value: auto | one | zero-or-one | zero-or-more | one-or-more
Initial: auto
Inherited: no
to indicate that an element is a template or not? ('Auto' means it
depends on whether the server supports PUT or an equivalent method.
Better keywords welcome...)
It's obviously very limited (no way to restrict the contents beyond the
DTD), but it might still be useful and at least it is simple.
Bert
--
Bert Bos ( W 3 C ) http://www.w3.org/
http://www.w3.org/people/bos W3C/ERCIM
bert@w3.org 2004 Rt des Lucioles / BP 93
+33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Thursday, 29 September 2005 13:19:56 UTC