- From: Jon Bosak <bosak@atlantic-83.Eng.Sun.COM>
- Date: Sat, 19 Apr 1997 00:02:06 -0700
- To: w3c-sgml-wg@w3.org
We've said since this activity began that Phase 3 was going to be devoted to the creation of a stylesheet language for what we now call XML and that the stylesheet language would be defined by subsetting DSSSL. This objective hasn't changed, but it has become clear that we need to specify one or more methods for attaching stylesheets to documents so that people can start trying out different approaches and that such methods properly belong to xml-lang or xml-link, not to xml-style itself. This message is intended to start a discussion of how to specify these methods. Requirements are the best place to begin; these occur to me: 1. Dsssl-o already exists, so while its refinement may be considered the basic work of Phase 3, it can already be experimented with. Thus, we should attempt to standardize at least one form of association that can be deployed fairly quickly. A simple mechanism that associates a single stylesheet with a given document might be very useful in this regard. 2. CSS already exists; it can and will be used with XML documents. So there is a requirement that at least one mechanism for associating stylesheets with documents be able to handle more than one stylesheet language. In the general case, one should be able to associate with a given document multiple stylesheets that each use a different stylesheet language. 3. DSSSL allows a single specification to contain multiple stylesheets, but CSS does not, so there must be a way to point to multiple stylesheets that use a single stylesheet language as well as to multiple stylesheets using different stylesheet languages. 4. CSS allows for style specifications to be embedded directly in the start-tags of the elements to which they apply. I have argued in the past that this will be very common in XML documents generated from databases, but now I'm not so sure. Do we allow this in XML documents? If so, how? 5. I have been informed by someone who watched a discussion of this take place in the html-wg that there is a requirement for stylesheets to be associated with specific parts of a document. (Makes sense when you think about it.) 6. The performance implications of different methods for calling in and applying stylesheets are beyond my ken, but there surely must be some. The implementors among us should be careful to consider the impact of the various approaches on the way that documents will actually be rendered. People should state other requirements if they can think of any. Here are some mechanisms for associating stylesheets with documents that have been proposed by various people. Method 1: The stylesheet PI This method was proposed by James Clark for use in the demonstrations at WWW6 and has been implemented in the latest release of Jade (see http://www.jclark.com/jade) and in the HyBrick HyTime/DSSSL browser from Fujitsu Labs. A stylesheet is associated with a document by putting a processing instruction like this in the prolog: <?XML-stylesheet type="text/dsssl" href="foo.dsl"?> The prolog might have a doctype declaration: <?XML version="1.0"?> <!DOCTYPE chapter [ <?XML-stylesheet type="text/dsssl" href="foo.dsl"?> ]> <chapter><title>.... </chapter> Or it might not: <?XML version="1.0"?> <?XML-stylesheet type="text/dsssl" href="foo.dsl"?> <chapter><title>.... </chapter> This is quick and easy, so it might qualify as the simple method for quick deployment. However, there appear to be problems in trying to extend this to the specification of multiple stylesheets. I don't clearly understand these problems, but James does. Pending their resolution (if any), the current understanding is that any PI after the first valid one is ignored. It would seem on the face of it that there is nothing to prevent having one PI for each stylesheet language; the rule would simply be that the first valid PI for each type (text/css, text/dsssl) is the one that gets used, and the application figures out which flavor it wants. It seems clear that we don't want to use this method to apply stylesheets to parts of a document; this would put us back into the position of thinking of the document as an event stream, which is one of the HTMLish things that XML is trying to get away from. The current experimental convention is that any stylesheet PI encountered outside the prolog is ignored. Method 2: The stylesheet link The leading alternative to the PI approach is to use some kind of specialized link. This has seemed so obvious to everyone that no one has bothered to propose specific syntax for it. I will leave this as a challenge for the more imaginative members of the WG. Some questions that will need answering are: Does the stylesheet link go in some kind of meta section, like HEAD in HTML? If so, how is that defined? Is a stylesheet link a normal link with a particular ROLE attribute? If so, ROLE becomes an enumerated attribute type. Is a stylesheet link always a simple link? Sometimes a simple link and sometimes an extended link? (It's easy to think of good uses for extended stylesheet links.) Always an extended link? Some different kind of link entirely? Method 3: The stylesheet attribute I can't remember anyone suggesting this alternative, but it suggests itself as soon as you assert the requirement that stylesheets be applicable to particular parts of a document. If we reject the idea that stylesheets are going to be switched on and off with PIs (I do!), then the obvious way to indicate the scope of a stylesheet is to associate it with a containing element. For example: <chapter xml-stylesheet="foo.dsl"> Unfortunately, this doesn't leave us with any clean way to indicate the stylesheet language unless we assume a limited number of them (which is not unreasonable): <chapter xml-dsssl="foo.dsl" xml-css="bar.css"> One senses that a further level of indirection may be needed here. When it's all over we may discover that this approach is no simpler than using extended links to associate stylesheets with particular container elements and probably much less general; one can imagine using extended links to associate stylesheets with arbitrary spans within a document, and while I don't think that this would be a particularly good idea for DSSSL stylesheets, it might make sense for CSS. It's possible that the right way to attack this problem is through some kind of "inline SUBDOC", which is not on the agenda for 1.0 but will almost certainly have to be reckoned with at some point. If we are to enable embedded CSS style specifications on individual elements, then special attributes would seem almost unavoidable: <chapter xml-css-style="color: blue"> ... Your thoughts and proposals are hereby solicited. Personal note: I will be out of email contact from Saturday noon to Monday night and then again most of the day Tuesday. But I'm sure that you will have this all figured out by the time I get back. Jon
Received on Saturday, 19 April 1997 03:02:33 UTC