Re: SGML macros using DSSSL expressions

Ka-Ping Yee (kryee@novice.uwaterloo.ca)
Sat, 24 Feb 1996 23:45:38 -0500 (EST)


Date: Sat, 24 Feb 1996 23:45:38 -0500 (EST)
From: Ka-Ping Yee <kryee@novice.uwaterloo.ca>
Subject: Re: SGML macros using DSSSL expressions
To: "Daniel W. Connolly" <connolly@beach.w3.org>
Cc: www-html@w3.org, mlvanbie@calum.csclub.uwaterloo.ca,
In-Reply-To: <m0tqL8r-0002U5C@beach.w3.org>
Message-Id: <Pine.3.87.9602242338.D23875-0100000@novice.uwaterloo.ca>

A macro language would be very powerful.

On Sat, 24 Feb 1996, Daniel W. Connolly wrote:
> 
> 	<!entity copyStatement "Copyright (c) 1996, all rights reserved">
> 	...
> 	&copyStatement;
[...]
> 
> 	<!element temp - O EMPTY>
> 	<!attlist temp
> 		x CDATA #REQUIRED
> 		y NUMBER #REQUIRED
> 		macro CDATA '(sequence "The temperature in" x "is" y ".")'
> 		>
[...]
> 
> 	<?dsssl (define (temp x y) (sequence "The temperature in " x " is " y ".")>

> 
> Hmmm... web browsers don't parse processing instructions well enough
> to hide them today.  Grumble.

Grumble.

> The other thing is that some folks want to be able to use expressions as
> attribute values. I thought about defining a new media type, say text/ehtml,
> where the lexical syntax of HTML is extended to include the lisp backquote syntax:
> 
> 	<h2>Section `,(set! counter (+ 1 counter))</h2>

I was discussing some ideas in a similar vein on the way back from
Philadelphia this past weekend.  I was thinking more of a preprocessor,
whose invocation would be signalled by a Content-Encoding.  This would
extend macro capabilities to theoretically any MIME type.

How about 

Content-Encoding: m4

with include() extended to accept URLs to macro definition files
(Content-Type: text/plain, Content-Encoding: m4) and no syscmd(), or, 
less powerful,

Content-Encoding: cc-E

with #include "..." extended to accept URLs?  It might be possible to
invent a new macro language that would work better for HTML, but maybe
it's more effective to stick with what people know well and what's
already implemented.  Adding a call to m4 could be very easy.  Maybe
we could add a few predefined macros, in the case of HTTP retrieval,
to provide a little extra power -- say, client(), server(), user(), 
time(), date(), referer(), to name a few.

Both these alternatives would make LOTS of really cool things possible.


Ping (Ka-Ping Yee):   3A Computer Engineering, University of Waterloo, Canada
kryee@csclub.uwaterloo.ca, St. Paul's College, Waterloo N2L 3G5, 519 725-8008
CWSF 89, 90, 92; LIYSF 90, 91; Shad Valley 92; DOE 93; IMO 91, 93; ACMICPC 94
* Ayukawa Madoka * Hiyama Hikaru * Tendou Akane * Hayakawa Moemi * Amano Ai *