Subject: Re: Is DSSSL Hard? From: James Clark <jjc@xxxxxxxxxx> Date: Sun, 20 Apr 1997 18:52:17 +0700 |
At 19:07 19/04/97 -0400, Dave Raggett wrote: >> (element BR (make paragraph-break)) > >Shouldn't this be a forced line break? Yes, paragraph-break isn't quite right because the line immediately following a paragraph-break is treated like the first line of a paragraph and so will have first-line-start-indent applied to it. The paragraph-break flow object is something of a hack, which is mainly intended to to handle elements like DL. Ideally what you want for DL is for each DT, DD pair to end up in a single paragraph flow object with the DT in a line-field flow object. Unfortunately this is hard to achieve without using quite a lot of the query language. So instead you can make the entire DL a paragraph and then put a paragraph-break flow object before each DT. This is easy to do without using much of the query language. >Is there a line-break >command in DSSSL for text flows? Any displayed flow object causes a break. Probably the easiest way is (make display-group (empty-sosofo)) >> (element B (make sequence font-weight: 'bold)) >> >> (element STRONG (make sequence font-weight: 'extra-bold )) >> >> (element I (make sequence font-posture: 'italic)) >> (element EM (make sequence font-posture: 'italic)) >> (element CITE (make sequence font-posture: 'italic)) > >How do font-postures work? I assume they combine together >but what happens if the combination is not available, I don't understand what you mean by combine together: there's only ever one applicable font-posture. > how >does the font selection work? The DSSSL standard doesn't specify. With Jade it's up to each backend to implement font-selection as it sees fit. >> (element IMG >> (make external-graphic >> entity-system-id: (attribute-string "src") >> display?: #t >> space-before: 1em >> space-after: 1em )) > >I think this needs to deal with the presence of width/height >attributes, and the padding and other properties. How would >I specify that I want the browser to show content early >repainting it as image sizes are determined? Arena works this >way while Netscape defers painting until image extents have >been determined. This fine degree of control isn't possible >with CSS, but should be with a richer style sheet mechanism. DSSSL doesn't have a characteristic for this, but it would be easy enough to add some for this. The set of characteristics defined by DSSSL is by no means complete -- no set every could be -- but DSSSL provides a clean way for new characteristics to be added without breaking existing implementations and without conflicting with each other. In general the DSSSL standard avoids defining very system-dependent characteristics like this, not because they're unimportant, but because they will typically need to evolve at a faster rate than is possible within the ISO standardization process. This is exactly the sort of thing that I hope will be tackled by the XML group when it comes to consider style. >> (element table >> (make table)) >> >> (element tr >> (make table-row)) >> >> (element td >> (make table-cell)) > >I am acutely aware of the problems involved in formatting >tables. Does DSSSL support the 2 pass mechanism for sizing >(possibly nested) tables according to the content? You can say that you want the column widths to be chosen automatically according to their content. DSSSL doesn't get into much detail about the algorithms to be used, but allows you to point to a public identifier specifying the algorithm. >There are hidden problems in specifying table style due to >that fact that its not a tree - cells have two parents a >row, and a column, then row groups and column groups. DSSSL does support this: the table-column flow object is a special case for inheritance. >Perhaps the mess can be hidden in specialized flow objects. >How does DSSSL allow me to specify a non-standard flow >object? I can envisage using Java to define a flow object >with an API for driving it from DSSSL, can you enlighten >me on how this works in practice? Can you use a URL to >bind to the Java code implementing the flow object? How >does the object declare its properties? > >I have in mind some very much more sophistocated kinds of >flow objects. What I would like is a means to declare a >declarative interface for these objects, which are then >realized in Java. I would like to see this too. In DSSSL you specify the semantics of a specialized flow object just by giving a public identifier. DSSSL provides no way to specify an implementation for these semantics. This is mainly because the nature of the specification will be highly system-dependent. A specialized flow object might be associated with: - a Java class, in a Java-based browser - a COM class, in a Win32 browser - a TeX macro, in a TeX based implementation An implementation that allows users to add their own flow objects will have some sort of catalog that associates public identifiers of flow object classes with objects that implement them whether Java classes or COM classes or whatever. To be fully general, it must be possible to break these specialized flow objects across lines or pages: designing an interface that supports this well is, I think, a really challenging problem. >Finally has anyone done any work on an easier syntax for DSSSL? >I can imagine recasting it in a more familiar syntax e.g. using >expressions with operators perhaps closer to Java, or scripting >languages. I suspect that this can be done using a trivial front >end that maps to the scheme syntax. I have given some thought to this, and I know others have as well. One possibility is to use an SGML/XML syntax. Instead of: (element P (make paragraph font-size: 12pt space-before: 2pt (process-children))) you might have: <element gi="P"> <paragraph font-size="12pt" space-before="2pt"> <children/> </paragraph> </element> Within attribute values specifying characteristics one could support some simple expressions: Instead of font-size: (+ (inherited-font-size) 2pt) you could have font-size="+2pt" I don't think it makes sense to try to allow any arbitrary DSSSL construct in this form. Once you get beyond simple things, I don't the syntax is the main barrier: I think the barrier is more that you have to approach things functionally rather than imperatively. So I would restrict this simpler syntax to the basics, but provide a way in the simple syntax to call out to procedures defined in standard DSSSL syntax and provide places in the simple syntax where procedures could be defined using standard DSSSL syntax. If anybody has got time on their hands, a cool project would be to design such an SGML/XML based syntax and then to use the SGML transformation Jade backend to transform this into standard DSSSL syntax. James
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Is DSSSL Hard?, Paul Prescod | Thread | Re: Is DSSSL Hard?, Henry S. Thompson |
Jade 0.7 available, James Clark | Date | Jade 0.7 changes, James Clark |
Month |