Re: HTML 2.0 spec and the META element

Roy T. Fielding (fielding@simplon.ICS.UCI.EDU)
Sun, 12 Jun 1994 02:21:26 -0700


To: connolly@hal.com
Cc: Multiple recipients of list <www-html@www0.cern.ch>
Subject: Re: HTML 2.0 spec and the META element 
In-Reply-To: Your message of "Thu, 09 Jun 1994 19:00:10 +0200."
             <9406091638.AA07050@ulua.hal.com> 
Date: Sun, 12 Jun 1994 02:21:26 -0700
From: "Roy T. Fielding" <fielding@simplon.ICS.UCI.EDU>
Message-Id:  <9406120221.aa08921@paris.ics.uci.edu>

Enclosed below is a patch file which would update the HTML 2.0
specification to include the proposed META element as per our
prior discussions on www-html and www-talk.  As far as I can tell,
it corresponds to the following additions to the DTD, but I am not
sufficiently fluent in SGML to verify its accuracy (and thus am
not including it as part of the patch file):

<![ %HTML.NEXTID [  <!ENTITY % head-content "TITLE? & ISINDEX? & LINK*
                        & BASE? & NEXTID? & META*"> ]]>
<!ENTITY % head-content "TITLE & ISINDEX? & LINK* & BASE? & META*">
<!ELEMENT HEAD O O  (%head-content)>


<!ELEMENT META - O EMPTY    -- Generic Metainformation -->
<!ATTLIST META

        HTTP-EQUIV  CDATA   #IMPLIED  -- HTTP response header name  --
        NAME        CDATA   #IMPLIED  -- metainformation name       --
        CONTENT     RCDATA  #REQUIRED -- associated information     --
        >


One question that remains is how should such "proposed" additions to
HTML be defined within the spec and (perhaps more importantly) within
the DTD?  The raw SGML has to be included somewhere, because very few
people know enough about SGML to safely edit a DTD.


....Roy Fielding   ICS Grad Student, University of California, Irvine  USA
                   (fielding@ics.uci.edu)
    <A HREF="http://www.ics.uci.edu/dir/grad/Software/fielding">About Roy</A>
=============================== cut here ===================================
*** originals/Tags.html	Sat Jun 11 23:17:23 1994
--- Tags.html	Sat Jun 11 23:28:02 1994
***************
*** 3,9 ****
  
  <HEAD>
  <TITLE>Elements of HTML</TITLE> <NEXTID
! N="z64"></HEAD>
  
  <BODY>
  
--- 3,9 ----
  
  <HEAD>
  <TITLE>Elements of HTML</TITLE> <NEXTID
! N="z65"></HEAD>
  
  <BODY>
  
***************
*** 25,31 ****
  
  </PRE>
  
! <P>The HEAD element is an small unordered collection of information
  about the document, whereas the BODY is an ordered sequence of
  information elements of arbitrary length.
  This organization allows an implementation to determine certain
--- 25,31 ----
  
  </PRE>
  
! <P>The HEAD element is a small unordered collection of information
  about the document, whereas the BODY is an ordered sequence of
  information elements of arbitrary length.
  This organization allows an implementation to determine certain
***************
*** 73,91 ****
  
  <DT>EXPIRES
  
! <DD>The date after which the document is invalid.
  Semantics as in the HTTP specification.
- </DL>
  
! <H3>Obsolete head elements</H3>
  
! <DL>
  
- <DT>META
- 
- <DD>A wrapper for an HTTP element
- 
- <DD>
  </DL>
  
  <H2><A NAME="z44" REL="SUBDOCUMENT"
--- 73,87 ----
  
  <DT>EXPIRES
  
! <DD>The date after which the document should be considered invalid.
  Semantics as in the HTTP specification.
  
! <DT><A NAME="z64" REL="SUBDOCUMENT"
! HREF="Elements/META.html">META</A>
  
! <DD>A generic mechanism for embedding document metainformation
! not specified by existing HTML elements.
  
  </DL>
  
  <H2><A NAME="z44" REL="SUBDOCUMENT"
*** originals/META.html	Sun Jun 12 01:49:29 1994
--- Elements/META.html	Sun Jun 12 01:26:48 1994
***************
*** 0 ****
--- 1,99 ----
+ <!DOCTYPE HTML PUBLIC "-//W3O//DTD WWW HTML 2.0//EN">
+ 
+ <HEAD>
+ <TITLE>The META element in HTML (proposed)</TITLE>
+ <NEXTID N="z3">
+ </HEAD>
+ <BODY>
+ 
+ <H1>META (proposed)</H1>
+ 
+ <P>The META element can be used within the <A NAME="z1"
+ HREF="HEAD.html">HEAD</A> element to embed
+ document metainformation not defined by other HTML elements.  Such
+ information can be extracted by servers/clients for use in identifying,
+ indexing, and cataloging specialized document metainformation. 
+ 
+ <P>Although it is generally preferable to use named elements which
+ have well-defined semantics for each type of metainformation (e.g. 
+ <A NAME="z2" HREF="TITLE.html">TITLE</A>),
+ this element is provided for situations where strict SGML parsing is
+ necessary and the local DTD is not extensible.
+ 
+ <P>In addition, HTTP servers can read the content of the document HEAD
+ to generate response headers corresponding to any elements defining a
+ value for the attribute HTTP-EQUIV.  This provides document authors a
+ mechanism (not necessarily the preferred one) for identifying information
+ which should be included in the response headers for an HTTP request.
+ 
+ <P>The attributes of the META element are:
+ 
+ <DL>
+ 
+ <DT>HTTP-EQUIV
+ 
+ <DD>This attribute binds the element to an HTTP response header.
+ It means that if you know the semantics of the HTTP response header
+ named by this attribute, then you can process the contents based on a
+ well-defined syntactic mapping, whether or not your DTD
+ tells you anything about it.  HTTP header names are not case sensitive.
+ If not present, the attribute NAME should be
+ used to identify this metainformation and it should not
+ be used within an HTTP response header.
+ 
+ <DT>NAME
+ 
+ <DD>Metainformation name.  If not present, the name can be assumed
+ equal to the value of HTTP-EQUIV.
+ 
+ <DT>CONTENT
+ 
+ <DD>The metainformation content to be associated with the given name
+ and/or HTTP response header.
+ 
+ </DL>
+ 
+ <H2>Examples of use</H2>
+ 
+ <P>If the document contains:
+ 
+ <PRE>
+     &lt;expires http-equiv="Expires"&gt;Tue, 04 Dec 1993 21:29:02 GMT&lt;/expires&gt;
+     &lt;meta http-equiv="Keywords" content="Fred, Barney, Wilma"&gt;
+     &lt;meta http-equiv="Reply-to" content="fielding@ics.uci.edu (Roy Fielding)"&gt;
+ </PRE>
+ The server may include the headers:
+ <PRE>
+     Expires: Tue, 04 Dec 1993 21:29:02 GMT
+     Keywords: Fred, Barney, Wilma
+     Reply-to: fielding@ics.uci.edu (Roy Fielding)
+ </PRE>
+ as part of the HTTP response to a GET or HEAD request for that document.
+ 
+ <P>When the HTTP-EQUIV attribute is not present, the server should not generate
+ an HTTP response header for this metainformation; e.g.,
+ <PRE>
+     &lt;meta name="IndexType" content="Service"&gt;
+ </PRE>
+ would not generate an HTTP response header but would still allow clients or
+ other tools to make use of that metainformation.
+ 
+ <H2>Examples of misuse</H2>
+ 
+ <P>One example of an inappropriate usage for the META element
+ is to use it to define information that should be associated with an
+ already existing HTML element, e.g.
+ <PRE>
+     &lt;meta name="Title" content="The Etymology of Dunsel"&gt;
+ </PRE>
+ 
+ <P>A second example of inappropriate usage is to name an HTTP-EQUIV
+ equal to a response header that should normally only be generated
+ by the HTTP server.  Example names that are inappropriate include
+ "Server", "Date", and "Last-modified" -- the exact list of inappropriate
+ names is dependent on the particular server implementation.
+ It is recommended that servers ignore any META elements which
+ specify http-equivalents which are equal (case-insensitively)
+ to their own reserved response headers.
+ 
+ </BODY>