From: Bert Bos <bert@let.rug.nl> Sender: www-html@www0.cern.ch To: Multiple recipients of list <www-html@www0.cern.ch> Subject: Addressing in style sheets Date: Wed, 9 Nov 1994 17:04:00 +0100 Content-Type: text I've been thinking about a good syntax for style sheets, but I couldn't decide on one. To a large extent, the syntax is arbitrary anyway. But I did come up with a few requirements. We'll need to discuss at least three issues: ADDRESSING: the `left hand side' of the style rules; specifies what part of a doc is affected by a rule (see below) FEATURES: what aspects of a design can be specified (font size, colour, frames, alignment, background, etc.) MODEL: feature semantics are defined relative to a conceptual model (e.g. TeX's boxes & glue, DSSSL's flow-objects) Addressing needs to be defined separately for each input format, the other two apply regardless of the source format. Here are the possibilities for addressing in SGML, partly borrowed from HyTime and DSSSL. [I've added my opinions in brackets.] NB. I've omitted non-ESIS information: addressing is only possible on a `canonical form' of the SGML document (for example, you cannot select things based on whether it was quoted with single or double quotes, whether it was the first thing on a line, whether it was in a marked section or not, or whether is was inside a comment.) I. Granularity - the smallest addressable units a. SGML elements b. sentences c. words d. letters [My opinion: The extra complexity needed to address within elements is not worth it. When needed, in most cases you can make a new document with extra EM tags inserted.] II. Addressing - how to identify the affected parts of a doc a. by context enclosing GI, plus zero or more of its ancestors b. by attributes select elements that have certain attribute values c. by ID d. by location path from root to element ("5th child of root") e. by content regular expressions ("elts containing big.*book") f. combined a-e ("5th word of elt with ID=xxx") [Context is the most intuitive, ID is handy for exceptions to a default rule, attributes might be useful as well, but maybe they can also be moved to the rhs of the style rules.] NB. sometimes it is useful to view the GI of an elt as just another attribute. III. Notation - how to represent the addresses a. identifiers & numbers b. regular expressions 1. HyTime, DSSSL, FOSI 2. new syntax, such as the one from the `cascading style sheets' [HyTime is designed solely for embedding addresses in SGML, there is no reason to use it `stand-alone'; DSSSL is too complex and too procedural for our needs; FOSI, which uses an SGML compatible syntax, is too verbose. As far as I know there is no suitable, standardized candidate, so we have to make our own syntax.] Bert -- ___________________________________________________________________________ ####[ Bert Bos ]####[ Alfa-informatica, ]#### ####[ <bert@let.rug.nl> ]####[ Rijksuniversiteit Groningen ]#### ####[ http://www.let.rug.nl/~bert/ ]####[ Postbus 716 ]#### ####[ ]####[ NL-9700 AS GRONINGEN ]#### ####[______________________________]####[_____________________________]####