[6216] in www-talk@info.cern.ch

home help back first fref pref prev next nref lref last post

Re: Format Negociation in Practice [Was: Versioning HTML at the server]

daemon@ATHENA.MIT.EDU (Earl Hood)
Tue Oct 18 17:53:44 1994

Date: Tue, 18 Oct 1994 22:52:07 +0100
Errors-To: postmaster@www0.cern.ch
Errors-To: postmaster@www0.cern.ch
Reply-To: ehood@imagine.convex.com
From: Earl Hood <ehood@imagine.convex.com>
To: Multiple recipients of list <www-talk@www0.cern.ch>


> I don't know if this means more tutorial documentation, or some
> http server configuration options, or changes to clients, or what.
> 
> I have a few ideas, but I'd like to hear from other folks: how can
> we clean this mess up? Or is format negociation just not gonna work?

Here's somethings off the top of my head; I'm still not sure if
it is 'good' SGML, but SGML seems not to handle dynamic conditions
in a clean way:


1.  Marked Sections
-------------------

Clients by default can define the following types of general entities:

	HTML.Level0
	HTML.Level1
	HTML.Level2
	HTML.Level3
	...

For example, a level 2 comforming client would imply the following
declarations:

	<!ENTITY HTML.Level0 'INCLUDE'>
	<!ENTITY HTML.Level1 'INCLUDE'>
	<!ENTITY HTML.Level2 'INCLUDE'>

Then a document writer can use the following constructs:

    <p>Blah blah blah

    <![ &HTML.Level2; [
	    <!-- Whatever level 2 stuff in here -->
    ]]>
    <![ &HTML.Level3; [
	    <!-- Whatever level 3 stuff in here -->
    ]]>

To provide alternatives for the same data.

If a client discovers a entity reference as the status-keyword and the
entity is not defined (like HTML.Level3 for level 2 or lower clients)
the replacement value 'IGNORE' is used.


2.  Processing instructions
---------------------------

Processing instructions could be used to inform the client on different
levels of HTML being used in a document.  For example:

    <?level=2>
    <!-- Level 2 (and lower) markup here -->

    <?level=3>
    <!-- Level 3 (and lower) markup here -->

    <?level=2>
    <!-- Switch back -->

The client can send a warning to the user when higher level
instructions are specified that is not directly supported by the
client.  The default level can be implied by the <!doctype declaration,
or if not defined, the highest level supported by the client.

Of course, there are inherent disadvantages to using processing
instructions, and this seems a little ugly to me.


3.  New HTML elements
---------------------

Add new elements to HTML like the following:

	<!ELEMENT ALTERNATE - - (PART)+ >
	<!ELEMENT PART      - - ANY     -(HTML|HEAD|BODY) >
	<!ATTLIST PART
		  level NUTOKEN #IMPLIED >

As you might guess, it is somthing similiar to a multipart/alternative
MIME message.  Example of usage:

    <alternate>
    <part level=2>
	    <!-- level 2 markup -->
    </part>
    <part level=3>
	    <!-- level 3 markup -->
    </part>
    </alternate>


Clients will choose the markup that is contained in the highest level
part to render.



4.  The CONCUR construct
------------------------

The CONCUR feature of SGML can be used to handle alternate views.  I'm
not to knowledgable/experienced on the CONCUR feature of SGML, so I'm
unsure if it can solve the problem.  Plus, I think it would be awkward
for authors to use.


My $0.02,

	--ewh

home help back first fref pref prev next nref lref last post