Design Report for the W3C XML Specification DTD

by ArborText Inc.

Revision History
Revision 1.0.7 April 1998.Revised by: elm/sel.
First release of report, corresponding to the DTD with the FPI "-//W3C//DTD Specification::19990323//EN".
Contents
About This Report
Purpose and Scope
How to Use This Report
How to Read Elm Tree Diagrams
1 Introduction
1.1. Catalog of Analysis Inputs
1.2. Design Principles
1.2.1. Scope
1.2.2. Focus
1.2.3. Presentation Independence
1.3. Information for DTD Maintainers
1.3.1. Versioning and Updates
1.3.2. Naming and Coding Conventions
1.3.3. Parameter Entity Typology
1.3.4. XML Usage
1.3.5. Parameterization
1.4. Issues
2 Common Attributes
2.1. Attributes Appearing on Every Element
2.1.1. id Attribute
2.1.2. role Attribute
2.2. Attributes Appearing on Selected Elements
2.2.1. Key Attribute
2.2.2. Definition Attribute
2.2.3. Reference Attribute
2.2.4. Hypertext Reference Attribute and Source Attributes
2.2.5. Attributes Appearing on the htable Element
3 Document Hierarchy and Metadata Structures
3.1. Overall Specification Structure (spec)
Description
Processing Expectations
Rationale
3.2. Specification Header (header)
Description
Processing Expectations
Rationale
4 Standalone Element Structures
4.1. Paragraphs (p and statusp)
Description
Attributes
Processing Expectations
Rationale
4.2. Regular Lists
4.2.1. Unordered List (ulist) and Ordered List (olist)
4.2.2. Simple List (slist)
4.2.3. Glossary List (glist)
4.3. Special Lists
4.3.1. Bibliography List (blist)
4.3.2. Organization List (orglist)
4.4. Notes
4.4.1. Regular Note (note)
4.4.2. Well-Formedness Constraint Note (wfcnote) and Validity Constraint Note (vcnote)
4.5. Illustrations
4.5.1. Example (eg)
4.5.2. Graphic (graphic)
4.5.3. Code Scrap (scrap)
4.5.4. HTML-Style Table (htable)
5 Phrase-Level Structures
5.1. Annotations (footnote)
Description
Attributes
Processing Expectations
5.2. Terms and Definitions
5.2.1. Defined Term (term)
5.2.2. Term Definition (termdef)
5.3. Emphasized Text
5.3.1. Emphasized Text (emph)
5.3.2. Quote (quote)
5.4. References
5.4.1. Bibliography Reference (bibref)
5.4.2. URI Reference (loc)
5.4.3. Specification Reference (specref)
5.4.4. Term Reference (termref)
5.4.5. Title Reference (titleref)
5.4.6. External Specification Reference (xspecref)
5.4.7. External Term Definition Reference (xtermref)
5.5. Technical
5.5.1. Code Fragment (code)
5.5.2. Keyword (kw)
5.5.3. Nonterminal Reference (nt)
5.5.4. External Nonterminal Reference (xnt)
5.6. Editorial Notes (ednote)
Description
Attributes
Processing Expectations
Rationale
6 Making Connections
6.1. Linking Relationships
6.2. Data Content Notations
6.3. Characters and Symbols
7 Element Classes and Mixtures
7.1. Standalone Element Classes and Mixtures
7.2. Phrase-Level Element Mixtures

About This Report

This report documents the design of the XML specification DTD. This is the first release of the report, corresponding to the DTD with the FPI "-//W3C//DTD Specification::19990323//EN".

NOTE: This version of the report contains some graphics that have display anomalies (hidden diagonal lines showing up in GIFs). This will be corrected in a future version.

Purpose and Scope

This report describes the DTD used for World Wide Web Consortium (W3C) specifications and notes related to XML.

Following are the major contributors to the DTD design:

 Jon Bosak, Sun (XML chair)
 Tim Bray, Textuality and Netscape (XML co-editor)
 Dan Connolly, W3C (W3C staff contact)
 Eve Maler, ArborText (DTD maintainer)
 Gavin Nicol, Inso (DOM member)
 C. Michael Sperberg-McQueen, University of Illinois (XML co-editor)
 Lauren Wood, SoftQuad (DOM chair)

How to Use This Report

This report is organized as follows:

How to Read Elm Tree Diagrams

To understand the graphical “elm tree diagrams” used in this report, use the following legend.


Section 1 Introduction

Following is information on the sources of analysis input, the design principles governing the markup model, the implementation principles governing its expression in DTD form, and outstanding issues.


1.1. Catalog of Analysis Inputs

The following have been used as analysis input in designing the DTD:


1.2. Design Principles

Following are the design principles governing the markup model of the DTD.


1.2.1. Scope

Although the DTD has come to be called “XMLspec,” it is intended for W3C working drafts, notes, recommendations, and all other document types that fall under the category of “technical reports.”

The DTD is responsible for covering three main aspects of XML technical reports:


1.2.2. Focus

The DTD is intended to support the following functions, in order of priority:

  1. Production of technical reports

    First and foremost, the DTD should facilitate hassle-free production and publication. Many of the documents in the scope are made available in several output forms, including source XML, derived HTML, RTF, and PostScript. It is important to produce these outputs in a form that meets W3C requirements, and produce them quickly in order to speed the W3C publication release process. Also, it may be useful to extract different parts of the document content (for example, just the productions) for distribution.

  2. Creation and modification of content

    The DTD should provide an intuitive, efficient interface to the creation process. This means that the DTD shouldn't be overly large or complicated, but that it should provide support for information structures using the jargon, and to the depth, that authors will tend to understand the information.

  3. Review of content

    To a lesser degree, the DTD should support the informal workflow that goes on when co-editors pass around drafts for review. To this end, the DTD should provide markup for editor “communication” inside the document source.

  4. Proof of concept of XML publishing

    Finally, where possible, this DTD and its associated applications should use good XML practice and conforming XML tools, because many will look to this application as an example.


1.2.3. Presentation Independence

The DTD should avoid presentational markup where possible. Sometimes this principle comes into conflict with the production focus, but in general, presentation independence helps serve the goal of production of multiple outputs. In any case, egregious examples of formatting-specific markup should be avoided.


1.3. Information for DTD Maintainers

The following information gives background on implementation decisions.


1.3.1. Versioning and Updates

This DTD is given a formal public identifier in the following pattern:

-//W3C//DTD XML Specification::yyyymmdd//EN

The current version is identified as:

-//W3C//DTD XML Specification::19980323//EN

It is a goal to avoid backwards-incompatible changes where possible, but occasionally this is necessary. Always review the change history in any new version of the DTD carefully before deploying it.

Currently, DTD changes are at the discretion of the maintainer and the heaviest users of the DTD. A more formal procedure may be put in place by the W3C later.


1.3.2. Naming and Coding Conventions

The original element names were mostly kept; changes were made in a few cases only to rationalize the naming scheme.

Hyphens are avoided, except in the “w3c-” prefix.

Whitespace and tabs are used relatively sparingly to enhance readability; excessive whitespace is avoided in the interest of a compact and “unthreatening” DTD.


1.3.3. Parameter Entity Typology

Parameter entities are used in several different capacities in the DTD. To indicate their different roles, unique suffixes are used as follows:

descrip.att

The name, declared value, and default value specifications for a set of one or more attributes.

Some descriptions may have a sub-suffix, such as -req, which means that the attribute (or one of the attributes) in question is required.

descrip.class

A set of related elements that are typically available as options in certain content model “free mixtures” (repeatable-OR groups). These entities are referenced from within descrip.mix entity declarations, content models, and content model exceptions.

If you add a new standalone or phrase-level element, make sure that you add it to the appropriate class entity, or create a new class for it. If you create a new class, incorporate references to that class in the appropriate mixture entity declarations.

descrip.mix

A set of elements that are available to writers in certain contexts as a “free mixture” (repeatable-OR group). These entities are referenced from within content models.

descrip.pcd.mix

A set of #PCDATA and elements that are available to writers in certain contexts as a “free mixture” (repeatable-OR group). These entities are referenced from within content models. The presence of #PCDATA makes these “mixed” content models, which means that document creators can type regular text here.

local.descrip.class

An empty placeholder that is available to be used in extending an element class.

descrip.mdl

A content model fragment (other than a “free mixture”) that is common or customizable.

The goal in naming the entities was to be consistent and brief, without losing readability. The keyword indicating the entity type always appears last because the location of an entity reference will already give a clue as to the entity type, and so this is not the information that needs to be seen first when the DTD is read. This naming scheme also allows for easier searching.


1.3.4. XML Usage

The DTD conforms to XML V1.0. The intent is to make available an XML-compliant version of the DTD, even though some editors may choose to work and interchange in full SGML.

While XLink is used for all URL-style linking, the IDREF mechanism is still used heavily for internal links. As support for the #id(xxx) Xpointer construct grows, we will consider moving to this style of link for these cases.


1.3.5. Parameterization

The DTD is beginning to be used by other W3C Working Groups. While this DTD was designed with the needs of XML technical reports firmly in mind, quite a lot of the markup design would be useful for technical reports produced by others in the W3C. Therefore, the DTD has been parameterized to allow for:

If it is found that the DTD can be made more widely useful solely by heavier parameterization, it would probably be worth it to add the new parameters.

Heed the following advice if you plan to develop a variant of the DTD:


1.4. Issues

Following are outstanding global issues:

  1. Consider adding a syntactic metavariable element, so that emph doesn't get abused too badly.

  2. Eventually remove statusp. Note that there's a bug in how it's defined: it can contain paragraphs (of both types). This bug will go away when the element goes away.

  3. Consider adding an optional href to name and affiliation, and allowing them and emailin regular text.

  4. Revise XLink usage as necessary.

  5. Dan's latest word on the appropriateness of external cross-references in specifications is that all references should be to a bibliography entry, and then the bibliography entry should point to the Web resource (if possible). This would suggest that we should freely allow bibref, but allow loc only in the special header fields such as “Latest Version” and in bibliography entries. Should we try to migrate over to this scheme?

  6. Perhaps related is the fact that titleref is freely allowed in paragraphs as well as in bibl. Since titleref is like a restricted or subclassed form of loc, it may also be obsolescent. In addition, titleref appears to duplicate the hypertext function of bibl (or maybe it's the other way around, since it may be inappropriate to make the entire contents of bibl “hot”).

  7. Dan has requested that the element type names in this DTD match HTML wherever possible. The question, how much is possible? About 10–15 of the element types in this DTD are strongly reminiscent of element types in HTML. However, in all cases, there are subtle differences (sometimes simply amounting to different subelements allowed inside the element in question). Should the element type names be made to match?

    Following are the potential correspondences:

    XML specification DTDHTMLComments
    locaThe semantic is slightly different
    pp No change needed
    ulistul 
    itemli 
    olistol 
    slistslFor consistency; not HTML-based
    glistdlContents are significantly different
    gitemdliFor consistency; not HTML-based
    labeldt 
    defdd 
    blistblFor consistency; not HTML-based
    egpreThe semantic and contexts are different
    graphicimg 
    emphem 

  8. Do any notations need to be defined? Currently, the graphic element is defined to point to a URI, and doesn't require that an unparsed entity be declared or invoked.

  9. If a glossary list is used to organize term definitions, how can termdef properly be used? Currently, at least in the XLink-related drafts, the contents of the label element are surrounded with a termdef element and a term element isn't provided, while the actual definition text in def goes unmarked-up as such.


Section 2 Common Attributes

This chapter describes the markup design for attributes that appear on multiple element types in substantially similar form.


2.1. Attributes Appearing on Every Element

The following attributes are truly “common”; they are available on every element type and have the same basic meaning everywhere.


2.1.1. id Attribute

Description

The id attribute is for uniquely identifying an element so that it can be linked to from elsewhere. The id attribute is declared as type ID.

The id attribute appears on every element. Its value is optional on most elements; however, a value is required on the following elements because they nearly always serve as the target of a link:

 wfcnote
 vcnote
 prod
 termdef

The %common.att; entity is used for those elements that don't require an id attribute, and the %common-idreq.att; entity is used for those elements that do require an id attribute.

Processing Expectations

ID values may be linked to; each linking element has its own processing expectations.

Rationale

IDs are generally useful in document management. Thus, they are made available on every element, just in case. For those elements that generally serve as targets of links, IDs are made mandatory.

Note that an attribute with type ID can be used both by IDREF attributes and by XPointers. The unique identification of an element does not presume a linking solution.


2.1.2. role Attribute

Description

The role attribute is for extending an element type by giving it an additional descriptive keyword, which a stylesheet can act on if necessary. The role attribute is declared as NMTOKEN. The %common.att; and %common-idreq.att; entities both contain role, in optional form.

Processing Expectations

Role values may or may not be operated on by stylesheets.

Rationale

Roles help extend the life of a DTD between revisions and serve as a way to prototype new DTD extensions.


2.2. Attributes Appearing on Selected Elements

The following attributes each appear on a few similar elements, and generally have similar meaning in each case.


2.2.1. Key Attribute

Description

The key attribute provides a string that can be used in sorting, indexing, and general description, when it is suspected or known that the element content won't suffice.

The key attribute appears on the following elements:

 name
 bibl

Processing Expectations

The value of the attribute is used in sorting, indexing, or generating cross-reference text. See the sections on the individual elements for more information.

Rationale

It was felt that a subelement solution to the problem of sorting (in the case of name) was not ideal, because you need to surround some existing element content with the sorting subelement, and the existing content may not be suitable for sorting. (This is the same problem that index-term markup has.) We decided that an attribute would be more effective and less intrusive.


2.2.2. Definition Attribute

Description

The def attribute points to the element where the relevant definition can be found, using the IDREF mechanism. The %def.att; parameter entity is used for optional def attributes (of which there are currently none), and the %def-req.att; parameter entity is used for required def attributes.

The def attribute appears on the following elements, and is required on all of them:

 wfc
 vc
 nt
 termref

Processing Expectations

The content of this element should allow the user to link to the definition.

Rationale

The IDREF mechanism was used for now, until the XLink #id(xxx) mechanism is more widely supported.

Though %def.att; isn't used for now, it's coded in case it's needed later.


2.2.3. Reference Attribute

Description

The ref attribute points to the element where additional information can be found, using the IDREF mechanism. The %ref.att; parameter entity is used for optional ref attributes (of which there are currently none), and the %ref-req.att; parameter entity is used for required ref attributes.

The def attribute appears on the following elements, and is required in both cases:

 bibref
 specref

Processing Expectations

The content of this element should allow the user to link to the additional information.

Rationale

The IDREF mechanism was used for now, until the XLink #id(xxx) mechanism is more widely supported.

Though %ref.att; isn't used for now, it's coded in case it's needed later.


2.2.4. Hypertext Reference Attribute and Source Attributes

Description

The href attribute points to the resource where more information or source data can be found, using the XLink simple linking mechanism. For some purposes, the href attribute is associated with additional XLink attributes (which set the desired behavior to show=”new” and actuate=”user”). The %href.att; parameter entity is used for optional href attributes and their related XLink attributes, and the %href-req.att; parameter entity is for required href attributes and their related XLink attributes.

The href attribute appears on the following elements, where its value is required:

 email
 loc
 xnt
 xtermref

The href attribute also appears on the following elements, where its value is optional:

 bibl
 titleref

The source attribute points to the file where the graphic source data can be found; it is always required. The %source-req.att; parameter entity is used for the source attribute and its related XLink attributes (which set the desired behavior to show=”embed” and actuate=”auto”). The source attribute appears on the following element:

 graphic

Processing Expectations

In general, the content of elements with an href attribute should allow the user to link to the resource. The graphic element should pull in the graphic and display it in place. These behaviors are indicated by the use of the appropriate XLink show and actuate attributes.

For detailed information about processing expectations, see Section 6.1.

Rationale

For inter-document links, it made more sense to use XLinks than any other method.


2.2.5. Attributes Appearing on the htable Element


2.2.5.1. align Attribute

Description

The align attribute specifies horizontal spacing. If this attribute is used on the htable element, it will specify the placement of the entire table. The default for the entire table is specified on the htable element. The table's default value can be overridden on lower-level elements within the table. For instance, if it is used on tr element, the horizontal alignment will be specified for all the cells in a particular row, or for a particular cell if specified on td. In most cases a value is optional; it has possible values of “left”, “center”, and “right”.

The align attribute appears on the following elements:

 htable (The default is “left”)
 tr
 td

Processing Expectations

It is expected that this HTML-based table markup will be trivially converted into real HTML markup and operated on in the usual way.


2.2.5.2. valign Attribute

Description

The valign attribute specifies vertical spacing. If it is used on the tr element, the vertical alignment will be specified for all the cells in the particular row, or for a particular cell if specified on td. A value is optional; it has possible values of “top”, “middle”, and “bottom”.

The valign attribute appears on the following elements:

 tr
 td

Processing Expectations

It is expected that this HTML-based table markup will be trivially converted into real HTML markup and operated on in the usual way.


Section 3 Document Hierarchy and Metadata Structures

This section describes the major document hierarchy structures:

 spec
 header


3.1. Overall Specification Structure (spec)

Description

The spec element contains, in order, a header; an optional front; a body; and an optional back.

The header provides metadata about the specification document (see Section 3.2 for more information). The front matter is for prefatory material. The body matter is primary content. The back matter is supplementary content. All three are organized into divisions.

The elements front and body contain one or more div1 elements. The main element for structuring content is div1, the equivalent of a preface, chapter, or appendix. It can be subdivided to three additional levels, down to div4. At each level, the division contains a head (title), optionally followed by a mixture of standalone elements (see Table 7-1), optionally followed by the next level of subdivision (except in the case of div4).

The back element contains div1 and/or inform-div1 (non-normative or informational division) elements. If both are present, the normative divisions must appear first. The back element cannot be empty.

Processing Expectations

Divisions are expected to be numbered, and a report of the numbers and heads should normally be made into a Table of Contents before any front content.

Rationale

Elements serving the same function were merged to make a cleaner design.

The original text element, which wrapped all the non-header content, was removed because it didn't add anything to the structure, and its meaning (“a text”) doesn't seem very relevant to W3C specifications. The original header contents have been consolidated under the header element, which meant that the original front element was no longer required because its titlepage contents have been done away with. The original backtabs element was removed, as agreed.

The original type attributes on the division elements were removed, as agreed.

Here is where it becomes apparent that the original “special lists” were removed from their special place in the division content models.


3.2. Specification Header (header)

Description

The header contains an ordered series of metadata elements:

title

The title of the technical report, for example, “Extensible Cheese Language (ECL)”.

This was previously the wd-title element. It contains character data (see Table 7-2).

subtitle (optional)

The subtitle of the technical report, if it has one. It contains character data (see Table 7-2).

version

The version of the technical report, for example, “Version 4.0”. It contains character data (see Table 7-2).

w3c-designation

The code by which the technical report is known in URIs and such, for example, “WD-xcl-991231”.

This was previously the wd-num element. It contains character data (see Table 7-2).

w3c-doctype

The full name for the type of W3C technical report, for example, “World Wide Web Consortium Working Draft” or “World Wide Web Consortium Note”. It contains character data (see Table 7-2).

pubdate

The day (optionally), month, and year of publication of the document, separated out into day, month, and year elements. This should be the date on which the final text has been handed over to the W3C for official publication. Note that in internal interim drafts, you may want to provide a notice explaining the situation. The day, month, and year elements contain character data (see Table 7-2).

This was previously the wd-date element.

notice (optional and repeatable)

A generic notice to readers, for example, “This draft is for public discussion.” You can add as many notices as are required.

The notice element contains a mixture of standalone elements (see Table 7-1).

publoc

The one or more Web resources corresponding to the different published forms (for example, XML, HTML, and PostScript) of this technical report. It contains one or more loc elements.

The content of each loc element should be a URI in the W3C style, which requires that the .htm or .html extension not be shown. The element also has a required href attribute, where a form of the URI that is suitable for actual Web access is supplied.

This was previously the thisver element.

prevlocs (optional)

The one or more Web resources corresponding to the previously published versions of this technical report. It contains one or more loc elements. If there are no previous versions, the prevlocs element itself should not be provided.

The content of each loc element should be a URI in the W3C style, which requires that the .htm or .html extension not be shown. The element also has a required href attribute, where a form of the URI that is suitable for actual Web access is supplied.

This was previously the previousver element.

latestloc (optional)

The one or more Web resources corresponding to the latest version of this technical report. It contains one or more loc elements.

The content of each loc element should be a URI in the W3C style, which requires that the .htm or .html extension not be shown. The URI should also not contain a datestamp; the W3C staff should arrange for this URI to be symbolically linked to the datestamped version. The element also has a required href attribute, where a form of the URI that is suitable for actual Web access is supplied.

This was previously the latestver element.

authlist

The list of editors contributing to the document. It contains one or more author elements, each of which contains a name (has an optional key attribute), followed by an optional affiliation, followed by an optional email. The last requires an href attribute. The name, affiliation, and email elements contain character data (see Table 7-2).

This was previously the authors element. The affiliation element is optional because some editors may not be affiliated with any organization. The email element is optional to help avoid spamming of the editors.

status

A description of the status of the document, following W3C rules. This element contains a normal mixture of standalone elements (see Table 7-1), except that in addition to p, it allows a variant called statusp. Note that statusp is obsolete; it will be removed from future versions.

abstract

A brief description of the document contents. It contains a mixture of zero or more standalone elements (see Table 7-1).

pubstmt (optional)

A brief bibliographic statement about this publication according to Text Encoding Initiative rules, for example, “Burlington, Seekonk, et al.: World-Wide Web Consortium, XML Working Group, 1999.” It contains a mixture of standalone elements (see Table 7-1), so the example text would have to be inside a p.

sourcedesc (optional)

A brief statement about the original source for this document, for example, “Created in electronic form.” It contains a mixture of standalone elements (see Table 7-1), so the example text would have to be inside a p.

langusage

A catalog of languages used in the document. It contains one or more language elements, each of which might have an id attribute on it so that it can be referenced from prod elements. The language element contains character data (see Table 7-2).

revisiondesc

A catalog of changes made to the document, in more or less rigorous form. It contains a mixture of zero or many standalone elements (see Table 7-1); typically, an slist element would be used, with its sitem elements corresponding to individual change descriptions and dates.

Processing Expectations

The various parts of the header are used in creating a title page that follows W3C rules. The content of some elements is used twice or more, while the content of other elements is suppressed from display. Some of the elements (such as publoc) should cause heading text to be generated.

The element name has, in addition to the common attribute, a key attribute, which optionally provides a sort-key string for use in collecting and outputting names mentioned in a document.

The element email has common attributes and a required href attribute.

Rationale

The content model of header has been parameterized so that the metadata can be customized, subsetted, and extended as necessary.

The metadata elements that were in the original DTD were cherry-picked, based on the data found in a survey of typical W3C technical report cover and title pages. Where an element is optional, generally content is required inside it to ensure that it's not abused or accidentally left empty.

The subtitle element was added unilaterally because it seemed like a generally good idea.

The w3c-doctype element should perhaps more properly be an attribute with a small set of enumerated values, if the DTD gets wider use and the types are quantified. So far, the element formulation has stood us in good stead because we began to publish “notes” in addition to “working drafts” and did not need to make any stylesheet changes.

The pubdate contains, in order, day (optional), month, and year elements so that different forms of the date could be published in different locations: “31 December 1999” on the title page and “December 1999” on the cover, for example. The content model of pubdate has been parameterized so that a different form of date information can be supplied if necessary.

The status element requires the statusp variant of the p element because Dan indicated that HTML-style links should be allowed only where they're appropriate. Because inclusions are not allowed in XML and we wanted this DTD to be XML compliant, the only way to allow status to contain loc was to give it a special subelement where loc is allowed. However, we've since found that it's very difficult to excise all need for HTML-style links in the body of the spec, so we ended up extending p to allow it to contain loc and, in preparation for losing statusp entirely, allowed p inside status. In other words, statusp is obsolete and will be removed from future versions of the DTD.


Section 4 Standalone Element Structures

Following are the standalone element structures (“paragraph-level elements”), which make up the bulk of the content of divisions in a technical report. These structures fall into classes, as follows. (Note that the DTD makes slightly finer distinctions than these, for purposes of managing content models.)


4.1. Paragraphs (p and statusp)

Following are the members of the paragraph class:

 Paragraph
 Status paragraph

Description

The p element is a general-purpose paragraph which can contain regular character data, phrase-level elements, and some nested standalone elements (see Chapter 7).

The statusp element is a special version of a paragraph (now obsolete) that was created to allow loc (see Section 5.4.2) inside it. A statusp contains a mixture of one or more %statusobj.mix; and/or %statusp.pcd.mix;.

Attributes

The p and statusp elements have two common attributes (see Section 2.1):

 id
 role

Processing Expectations

These elements should be presented as vertically set off from other surrounding elements, and their content should be wrapped.

Rationale

Originally, only p was made available, and it contained loc . Dan requested that the loc element not be made generally available, because properly these should only occur in the status section of a technical report, and statusp was therefore created because SGML exceptions, which would have allowed for a clean implemention of the restriction, aren't available in XML-compliant DTDs. However, later all the editors came to the conclusion that it was too restrictive not to allow loc anywhere else, and we added loc to regular paragraphs and p to the status section.

See issue 5 in Section 1.4.


4.2. Regular Lists

The following are the members of the regular list class:

 Unordered list
 Ordered list
 Simple list
 Glossary list


4.2.1. Unordered List (ulist) and Ordered List (olist)

Description

The ulist element identifies unordered lists (for example, with items indicated with bullets) and the olist element identifies ordered lists (for example, with items indicated with arabic numbers). Both ulist and olist contain one or more item elements, which identifies a list item. An item contains one or more standalone elements (see Table 7-1). Thus, a list item intended to contain a simple text string must first contain a paragraph.

Attributes

The ulist, olist, and item elements have two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, the ulist and olist elements have one unique attribute:

spacing

Specifies the vertical spacing between the list items. Use “normal” to get normal vertical spacing for items; use “compact” to get less spacing. The default is dependent on the stylesheet.

Processing Expectations

List style and formatting are not strictly dictated. An unordered list at the top level (not nested in another unordered list) should generate a bullet for each item. A nested unordered list should typically generate a distinct bullet (e.g., unfilled vs. filled). An ordered list at the top level (not nested in another ordered list) should generate sequenced numbers for its item. A nested ordered list should typically generate a distinct numbering style (e.g., lowercase roman vs. arabic).

Rationale

The ulist element was previously list type="bullets". The olist element was previously list type="number". The element type was split out to achieve greater content model control, and the names were chosen for consistency.


4.2.2. Simple List (slist)

Description

The slist element identifies a simple list, in which the items are presumed to contain only a small word or phrase. The slist contains one or more sitem elements, which contains character data and phrase-level elements (see Table 7-2). Simple list items are unlike regular list items in that the simple version can't contain standalone elements.

Attributes

The slist and sitem elements have two common attributes (see Chapter 2):

 id
 role

Processing Expectations

List style and formatting are not strictly dictated. Typically, simple list items are each on their own line, with no bullet or other explicit enumeration.

Rationale

The slist element was previously list type="simple". The element type was split out to achieve greater content model control, and the name was chosen for consistency.


4.2.3. Glossary List (glist)

Description

The glist element identifies a glossary list, in which terms or keywords are given a definition. The glist element contains one or more gitem elements. The gitem element is a pair of label and def. A label contains character data and phrase-level elements (see Table 7-2), and a def contains standalone elements (see Table 7-1)

Attributes

The glist, gitem, label, and def elements have two common attributes (see Section 2.1):

 id
 role

Processing Expectations

List style and formatting are not strictly dictated. Typically, glossary list items are formatted as classic hanging-indent or two-column definition lists.

Rationale

The gitem element is a container for paired items in glist elements. A container wasn't previously available; this should make formatting and other processing (such as sorting) easier.

The def element was previously the item element used in a “paired” context. It's easier to process these two uses of “items” if they have distinct element types.

The glist element was previously list type="gloss". The element type was split out to achieve greater content model control, and the name was chosen for consistency.


4.3. Special Lists

The following are the members of the special list class:

 Bibliography list
 Organization list

These elements are available in divisions and %obj.mix; content, but are not available inside (for example) paragraphs.


4.3.1. Bibliography List (blist)

Description

The blist element identifies a bibliography list. It contains one or more bibl elements, each of which optionally functions as a hypertext reference to the referred-to resource through its href attribute.

The bibl element contains character data and phrase-level elements (see Table 7-2). Its content model does not constrain authors to the use of a particular bibliographic format.

Attributes

The blist and bibl elements have two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, the bibl element has the following semi-common attributes:

 key (see Section 2.2.1)
 href (see Section 2.2.4)

Processing Expectations

List style and formatting are not strictly dictated. Typically, bibliography list items are formatted on their own line, and may use a definition list format by putting the value of the key attribute as the “term.”

Rationale

This was previously the listbibl element. The name was changed for consistency.


4.3.2. Organization List (orglist)

Description

The orglist element identifies an organization list (for example, a list of Working Group or Interest Group members). It contains one or more member elements. A member contains, in order, name, an optional affiliation, and an optional role.

The name, affiliation, and role elements contain character data (see Table 7-2).

Attributes

The orglist, member, affiliation, role, and name elements have two common attributes (see Section 2.1):

 id
 role

The name element also has the following semi-common attribute:

 key (see Section 2.2.1)

Processing Expectations

List style and formatting are not strictly dictated. Typically, organization list items are formatted as a “textual list,” wrapped in the content of a paragraph with items and their constituent parts separated by appropriate punctuation.

Rationale

The orglist element was previously the wglist element. The member element was previously the wgm element. The names were changed for consistency and clarity.


4.4. Notes

The following are the members of the note class:

 Regular note
 Well-formedness constraint note
 Validity constraint note


4.4.1. Regular Note (note)

Description

The note element is for admonitions to readers. It contains one or more standalone elements (see Table 7-1)

Attributes

The note element has two common attributes (see Section 2.1):

 id
 role

Processing Expectations

Although this element type was originally note place="inline", it was never used in its inline form as far as we can tell; plain notes should be formatted as vertically set-off content with some kind of generated “Note” heading.

Rationale

This was previously note place="inline". The element was split out for greater content model and linking control. We don't expect that notes other than “constraint notes” will be used very often.


4.4.2. Well-Formedness Constraint Note (wfcnote) and Validity Constraint Note (vcnote)

Description

The wfcnote element identifies a well-formedness constraint note and the vcnote element identifies a validity constraint note. Both wfcnote and vcnote contain, in order, a head followed by one or more standalone elements (see Table 7-1)

The wfcnote and vcnote elements must each have an id attribute specified so that it can be pointed to from a wfc or vc element, respectively, in a production (see Section 4.5.3) .

Attributes

The wfcnote and vcnote elements have two common attributes (see Section 2.1):

 id (required)
 role

Processing Expectations

These note elements should be displayed vertically set off, with a generated heading something like “Well-Formedness Constraint” or “Validity Constraint” followed by the specific head provided. The specific head should also be reproduced as part of the display of the related wfc or vc elements.

Rationale

These elements now require an ID so that a wfc or vc element, respectively, can link to them from inside prod. There is no point having a note if there is not at least one corresponding constraint in a production pointing to it.

These elements were previously note type="wf-check" and note type="v-check". The elements were split out for greater content model and linking control.


4.5. Illustrations

The following are the members of the illustration class:

 Example
 Graphic
 Code scrap
 HTML-style table


4.5.1. Example (eg)

Description

The eg element identifies technical examples. It contains character data and phrase-level elements (see Table 7-2).

Attributes

The eg element has two common attributes (see Section 2.1):

 id
 role

It also has an xml:space attribute with a #FIXED value of “preserve” to indicate that all white space inside the example should be retained by applications.

Processing Expectations

The element should be displayed as vertically set off (even if it appears inside a paragraph) and be given a monospaced font to ensure that characters and white space inside the example line up correctly.

Rationale

We expanded its content a bit from just #PCDATA, so that it can contain footnote and highlighting markup if necessary.


4.5.2. Graphic (graphic)

Description

The graphic element is used to reference external graphic files. The graphic data must reside at the location pointed to using the source attribute. The graphic element is declared EMPTY.

Attributes

The graphic element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, the graphic element has the following unique attributes:

source

A required hypertext reference pointing to the graphic data content to be displayed. Other related attributes are also present. See Section 2.2.4 for more information.

alt

An optional alternate string to display if the graphic data cannot be displayed or viewed.

Processing Expectations

The data content pointed to by the source attribute of the graphic element should be presented in place. The values for the XLink behavior attributes show and actuate are fixed to be “embed” and “auto”, respectively.

Rationale

The graphic element is done as simply as possible for the moment, because we anticipate the need for graphics (particularly in the XLink and/or XPointer specifications), but none of the specifications have any yet. There seems to be no need for a formal figure with a caption or head, nor for an additional layer of container element to allow for the later addition of graphic metadata. XLink is the obvious mechanism for pointing to the graphic data content.


4.5.3. Code Scrap (scrap)

Description

The scrap element identifies code scrap containing language productions. It contains, in order, a head element containing character data, followed by either a bnf element or one or more prod elements or one or more prodgroup elements.

The main element for structuring productions is prod. It contains, in order, an lhs (left-hand side) element identifying the nonterminal that is being defined, followed by one or more groups of rhs (right-hand side fragments) and an optional mixture consisting of com (commentary on the production), wfc (indications of well-formedness constraints), and vc (indications of validity constraints). It has a required id attribute so that specref cross-references (see Section 5.4.3) and nt mentions of nonterminals (see Section 5.5.3) can link to it.

The prodgroup element groups productions within a single scrap.

The bnf (Backus-Naur Format) element is for “raw,” unformatted productions without internal markup. It contains the same mixture of character data and phrase-level elements as eg does (see Table 7-2) .

The wfc and vc elements are empty. These indications of constraints must each use their required def attribute to link to an actual wfcnote or vcnote element that defines it.

Attributes

The scrap, head, bnf, prod, prodgroup, lhs, rhs, com, nt, xnt, wfc, and vc elements all have two common attributes (see Section 2.1):

 id (an attribute value is required for prod)
 role

In addition to the common attributes, Tthe wfc and vc elements have the following semi-common attribute:

 def (required; see Section 2.2.2)

In addition to the common attributes, the scrap element has one unique attribute:

lang

An optional IDREF link to a description of the language used, found in a language element in the header (see Section 3.2).

In addition to the common attributes, the prodgroup element has several unique attributes:

pcwn

Presentational attributes to control the width of the “pseudo-table” columns used to output groups of productions. The first column is pcw1. It can contain up to four more columns, down to pcw5. Values are optional to supply.

Processing Expectations

Each scrap is expected to be displayed vertically set off, with its head used as the label for the whole scrap. Each production should be numbered, and in some presentations, it may be appropriate to produce a “table of productions” at the front that lists the scrap heads, production numbers, and the nonterminals (the content of the lhs) they define. The style of production we have been using involves the generated output of a ::= LHS/RHS equivalence separator. Comments (com) are typically displayed between BNF comment delimiters to the right of each RHS fragment, and possibly italicized. Each RHS fragment is displayed on a separate line. The wfc and vc elements should generate text in place corresponding to either “WFC:” or “VC:”, followed by the head of the note they link to.

Rationale

We considered several different “depths” of production markup model, and settled on the current model as the best balance of functionality and presentational control. Modeling EBNF exactly would have required a very heavy markup burden, which most of the editors were not willing to live with, as well as a presenting a difficult formatting challenge, so we compromised by having (for example) several rhs elements per lhs to correspond to each display line.

The prodgroup element and its attributes were added to solve a thorny formatting problem involving the output of tables.

In general, the design here shows very clearly the tension between the design principles of presentation independence and efficient W3C document production.


4.5.4. HTML-Style Table (htable)

Description

The htable identifies an HTML-style table construct. It contains one or more table body elements (htbody), which in turn contains one or more table rows (tr). The tr element contains one or more table cells (td).

The td element contains character data and phrase-level elements (see Table 7-2).

Attributes

The htable, htbody, tr, and td elements have two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, the htable element has several unique attributes:

align

A setting for the horizontal alignment of text in all the cells of the table. The possible values are “left”, “center”, and “right”. The default is “left”.

border

Specifies the width of the border for the table. The default is “0”.

cellpadding

Specifies the spacing around the text within the cells of the table. The default is “0”.

In addition to the common attributes, the td element has several unique attributes:

align

A setting for the horizontal alignment of text in this cell. The possible values are “left”, “center”, and “right”. The default is dependent on the stylesheet.

valign

A setting for the vertical alignment of text in this cell. The possible values are “top”, “middle”, and “bottom”. The default is dependent on the stylesheet.

bgcolor

Specifies the background color of the cell within the table. A value is optional.

rowspan

Specifies the number of rows the current cell will span. The default is “1”.

colspan

Specifies the number of columns the current cell will span. The default is “1”.

The tr element can have the same align and valign attributes that the td element can have, except that the alignment values apply to the whole row, not just the cell.

Processing Expectations

The htable element should be handled as as HTML table elements are handled in HTML browsers.

Rationale

At first, the DTD offered only SGML Open Exchange tables, for which DSSSL formatting support already existed. However, HTML is the primary output for W3C documents, and HTML table formatting was written in DSSSL, so we added the HTML table model as well. More recently, we removed the SGML Open model because only the HTML model was actually being used.

We can easily add the SGML Open table model again if it is ever needed.


Section 5 Phrase-Level Structures

Following are the phrase-level element structures (“inline-level elements”), which are typically used along with character data. These structures fall into classes, as follows. (Note that the DTD makes slightly finer distinctions than these, for purposes of managing content models.)


5.1. Annotations (footnote)

The footnote element is the only member of the annotation class.

Description

The footnote element serves as both a marker for the location of the footnote callout and a container for the footnote content. It contains one or more elements in the %obj.mix; mixture.

Attributes

The footnote element has two common attributes (see Section 2.1):

 id
 role

Processing Expectations

For print, the location of the footnote element should be given a generated superscripted number or symbol that serves as a callout, and the footnote content should be presented along with the callout at the bottom of the page. In online presentation, the footnote could be presented as a pop-up dialog box keyed to an icon placed at the location of the footnote element.


5.2. Terms and Definitions

The following are the members of the term/definition class:

 Defined term
 Term definition


5.2.1. Defined Term (term)

Description

The term element identifies a term being defined. It contains character data (see Table 7-2). It is mostly used as a substructure of termdef, though it may occasionally be used outside of a termdef context for an “informally” defined term. For information on cross-referencing a term, see Section 5.4.4 and Section 5.4.7.

Attributes

The term element has two common attributes (see Section 2.1):

 id
 role

Processing Expectations

This element should be given some sort of typographical emphasis, for example italics.

Rationale

This element exists mostly to allow control of the typographical emphasis, since the term attribute on termdef does the work of supplying a “canonical” form of the term for use in generating definitions. If the canonical term and the term as it appears in text are identical, there is some slight redundancy, but the overhead of using the canonical term in the flow of text (or modifying it if it's inappropriately pluralized or capitalized) isn't worth it.


5.2.2. Term Definition (termdef)

Description

The element termdef contains a term definition. It contains a mixture of character data and phrase-level elements (see Table 7-2), including somewhere within it a mention of the term being defined (in a term element). Note that because the termdef element has mixed content, the presence of term within it can't be guaranteed by means of a validating XML processor. However, there is an editorial expectation that term will be present. (See issue 9 in Section 1.4.)

Attributes

The termdef element has two common attributes (see Section 2.1). It must have an id attribute so that it can be linked to from termref elements ( Section 5.4.7).

 id (required)
 role

In addition to the common attributes, termdef has one unique attribute:

term

The canonical form of the term or phrase being defined must appear in this attribute, even if the term or phrase also appears in the element content in identical form (in the term element).

Processing Expectations

While no special behavior or formatting is required, there are some opportunities for clever definition handling. For example, the terms and definitions could be assembled into a generated glossary, or definitions could be given some sort of boxing or generated-text boundaries in running text.

Rationale

Because we wanted to continue to allow definitions in running text, the mixed-content solution was the only reasonable choice even though it means that the DTD can't ensure that proper markup has been used.


5.3. Emphasized Text

The following are the members of the emphasized text class:

 Emphasized text
 Quote


5.3.1. Emphasized Text (emph)

Description

The emph element identifies text that should be given extra rhetorical emphasis. It contains character data (see Table 7-2).

Attributes

The emph element has two common attributes (see Section 2.1):

 id
 role

Processing Expectations

The content of the emph element should be given typographical emphasis, typically italic or boldface.

Rationale

If not abused, this element can be useful, and its presence probably forestalls abuse of other elements that happen to produce typographical emphasis. Since it is expected to contain only a word or two of natural language, it need only contain #PCDATA.


5.3.2. Quote (quote)

Description

The quote element identifies text that needs “scare quotes.” It contains a mixture of character data and the same phrase-level elements that are allowed in paragraphs (see Table 7-2).

Attributes

The quote element has two common attributes (see Section 2.1):

 id
 role

Processing Expectations

The content of the element should be presented with quotation marks around it, as appropriate for the language of the text in the document.

Rationale

This element was added to help manage the process of adding casual quotes. In an XML-aware environment, it is often easier to manage content in containers rather than as discrete symbols (for example, a left quote, then some text, then a right quote).


5.4. References

The following are the members of the reference class:

 Bibliography reference
 URI reference
 Specification reference
 Term reference
 Title reference
 External specification reference
 External term definition reference

The nt (nonterminal reference) and xnt (external nonterminal reference) elements could also count as reference elements; however, they are discussed as members of the technical class (see Section 5.5.4).


5.4.1. Bibliography Reference (bibref)

Description

The bibref element identifies a bibliography reference. It is declared to be empty. It links to the bibl element that describes the resource; in other words, this is only an indirect reference to the resource.

Attributes

The bibref element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, the bibref element has the following semi-common attribute:

 ref (required; see Section 2.2.3)

Processing Expectations

This element should generate, in square brackets, the value of the key attribute on the referenced bibl element (see Section 4.3.1).

Rationale

This element is allowed in a wide variety of places because (as noted in issue 5 in Section 1.4) the proper way to refer to any resource is by means of a bibliography reference. It is empty so that the proper reference text can be generated automatically.


5.4.2. URI Reference (loc)

Description

The loc element identifies a World Wide Web resource by its URI and functions as a hypertext link to a resource, essentially the same as an HTML A element does. (Ideally, the content of the loc element will also mention the URI , so that readers of the printed version will be able to locate the resource.) It contains character data (see Table 7-2).

Typically, loc elements should be avoided anywhere in a specification in favor of bibref. See issue 5 in Section 1.4 for more information.

Attributes

The loc element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it has the following semi-common attribute:

 href (required; see Section 2.2.4)

Processing Expectations

In electronic presentation, the content of this element should be “hot” to allow a user to traverse the link to the referenced resource. In print presentation, there may or may not be typographical distinction.

Rationale

This element was added early on, before W3C policy seemed to have solidified on the issue. The element may now be obsolescent.

Its name was chosen before the decision to use URIs instead of just URLs in XML. Such a reference might specify a physical location, a universal identifier for the resource, or something partway between the two.


5.4.3. Specification Reference (specref)

Description

The specref element identifies a cross-reference to another location in the current specification. It is declared to be empty. It is intended to be used to link to a div (division), an item in an olist (numbered list item), or a prod (language production) in the current spec.

Attributes

The specref element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it also has the following semi-common attribute:

 ref (required; see Section 2.2.3)

Processing Expectations

The specref element should generate a unique pattern of text depending on the cross-reference target:

In electronic presentation, the generated text should be “hot” to allow a user to traverse the link to the referenced resource.

Rationale

Having this element be empty ensures that consistent and correct cross-reference text will be generated.

The original reason that this element is separate from xspecref is that this one uses the ID/IDREF method of linking and xspecref uses the XLink/XPointer method. However, even if this element later switches to XLink, it may still be useful to have two separate elements, since this one does not document a cross-document dependency and xspecref does.


5.4.4. Term Reference (termref)

Description

The termref element identifies a mention of a term that is defined elsewhere; the mention also serves as a reference to the definition by linking to the termdef element that defines the term (see Section 5.2.1). The termref element contains character data (see Table 7-2).

It is expected that not every mention will be marked up. If a particular term is used with regularity in a single passage or sectikon, it is more reasonable to mark up only the first occurrence of that term within the passage or section.

Attributes

The termref element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it also has the following semi-common attribute:

 def (required; see Section 2.2.2)

Processing Expectations

In electronic presentation, the content of the element should be “hot” to allow a user to traverse the link to the referenced resource. In print presentation, typically it is given typographical distinction (such as italics).

Rationale

This element allows users to easily find the definition of a term being used in text.


5.4.5. Title Reference (titleref)

Description

The titleref element identifies a citation of the title of another work. A title reference can optionally function as a hypertext link to the resource that has this title. It contains character data (see Table 7-2).

The titleref element is typically expected to be used inside the bibl element, to supply the title of the work being identified in the bibliography entry. Note that both the bibl element and the titleref element can function as a hypertext link to the referenced resource; see issue 6 in Section 1.4.

Attributes

The titleref element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it also has the following semi-common attribute:

 href (see Section 2.2.4)

Processing Expectations

In electronic presentation, the content of this element should be “hot” to allow a user to traverse the link to the referenced resource. In all presentations, the title of the work will typically be rendered in italics.

Rationale

It is fairly clear that a means to mark up a reference to a title is appropriate, since at the very least such references are made to look different from their surroundings are aren't just “emphasized text.” However, the hypertext function is less clearly needed. See issue 6 in Section 1.4.


5.4.6. External Specification Reference (xspecref)

Description

The xspecref element is a reference to all or part of another W3C specification. It must hyperlink to the targeted resource. It contains character data (see Table 7-2).

Attributes

The xspecref element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it also has the following semi-common attribute:

 href (required; see Section 2.2.4)

Processing Expectations

In electronic presentation, the content of this element should be “hot” to allow a user to traverse the link to the referenced resource. In print presentation, there may or may not be typographical distinction.

Rationale

The xspecref element was added in response to a need to make hyperlinks to “base” specifications from specifications that properly depend on them. For example, the XML specification develops some concepts that are used in the XLink specification. Since this is more than a simple citation to another resource but rather provides details on the dependency, it seems appropriate to make this different from a regular specref.

The original reason that this element is separate from specref is that specref uses the ID/IDREF method of linking and this element uses the XLink/XPointer method. However, even if specref later switches to XLink, it is still be useful to have two separate elements.


5.4.7. External Term Definition Reference (xtermref)

Description

The xtermref element identifies a mention of a term that is defined in another specification; the mention also serves as a reference to the definition by linking to the termdef element in the other specification that defines the term (see Section 5.2.1). It contains character data (see Table 7-2).

Attributes

The xtermref element has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it also has the following semi-common attribute:

 href (required; see Section 2.2.4)

Processing Expectations

In electronic presentation, the content of this element should be “hot” to allow a user to traverse the link to the referenced resource. In print presentation, there may or may not be typographical distinction.

Rationale

The xtermdef element was added in response to a need to make hyperlinks to “base” definitions from specifications that properly depend on these definitions. For example, the XML specification defines some terms that are used in the XLink specification. Since this is more than a simple citation to another resource but rather provides details on the dependency, it seems appropriate to make this different from a regular termdef.

The original reason that this element is separate from termdef is that termdef uses the ID/IDREF method of linking and this element uses the XLink/XPointer method. However, even if termdef later switches to XLink, it is still be useful to have two separate elements.


5.5. Technical

The following are the members of the technical class:

 Code fragment
 Keyword
 Nonterminal reference
 External nonterminal reference


5.5.1. Code Fragment (code)

Description

The code element contains a code fragment. It contains a mixture of character data and phrase-level elements (see Table 7-2).

This element should be used whenever a code fragment can't be identified more precisely as a keyword or nonterminal.

Attributes

The code element has two common attributes (see Section 2.1):

 id
 role

Processing Expectations

The content of the element should be given typographical distinction, typically a monospaced font.

Rationale

This element is useful as the escape hatch for technical content. (Therefore, care should be taken not to abuse it.)


5.5.2. Keyword (kw)

Description

The kw element contains a keyword in the language being described in the document. It contains a mixture of character data and phrase-level elements (see Table 7-2).

Attributes

The kw element contains two common attributes (see Section 2.1):

 id
 role

Processing Expectations

The content of the element should be given typographical distinction, typically a monospaced font. Depending on the presentation, other processing, such as indexing each keyword in a paper index as “name keyword”, might be appropriate.

Rationale

It is useful to mark up keywords separately from random strings of code because it can be desirable to index the keywords specially.


5.5.3. Nonterminal Reference (nt)

Description

The nt element is a mention of a nonterminal. It must link to the production that defines the nonterminal. It contains character data (see Table 7-2).

Attributes

The element nt has two common attributes (see Section 2.1):

 id
 role

In addition to the common attributes, it also has the following semi-common attribute:

 def (required; see Section 2.2.2)

Processing Expectations

The content of the element should be given typographical distinction, typically a monospaced font. Depending on the presentation, other processing, such as indexing each mention in a paper index, might be appropriate. In electronic presentation, the content of this element should be “hot” to allow a user to traverse the link to the referenced resource.

Rationale

Since nonterminals are typically the basis of the formal definition of a language in a W3C specification, it makes sense to treat them specially. Mentions of nonterminals are required to link to the relevant production not just as an aid to the reader, but also to provide another check that every nonterminal has its own production.


5.5.4. External Nonterminal Reference (xnt)

Description

The xnt element identifies a mention of a nonterminal whose production appears in another specification; the mention also serves as a reference to the production by linking to the prod element in the other specification that defines the term (see Section 4.5.3). It contains character data (see Table 7-2).

Attributes

The xnt element contains two common attributes (see Section 2.1):

 id
 role

In addition, it contains the following semi-common element:

 href (required; see Section 2.2.4)

Processing Expectations

The content of the element should be given typographical distinction, typically a monospaced font. Depending on the presentation, other processing, such as indexing each mention in a paper index, might be appropriate. In electronic presentation, the content of this element should be “hot” to allow a user to traverse the link to the referenced resource.

Rationale

Since nonterminals are typically the basis of the formal definition of a language in a W3C specification, it makes sense to treat them specially. Mentions of nonterminals are required to link to the relevant production not just as an aid to the reader, but also to provide another check that every nonterminal has its own production. The xnt element was added in response to a need to make hyperlinks to “base” productions from specifications that properly depend on these productions. For example, the XML specification defines some nonterminals that are used in the XLink specification. Since this is more than a simple citation to another resource but rather provides details on the dependency, it seems appropriate to make this different from a regular nt.

The original reason that this element is separate from nt is that nt uses the ID/IDREF method of linking and this element uses the XLink/XPointer method. However, even if nt later switches to XLink, it is still be useful to have two separate elements.


5.6. Editorial Notes (ednote)

The ednote element is the only member of the editorial note class.

Description

The ednote element identifies commentary passed between editors and authors of a document. It contains an optional name element (the name of the person making the commentary), followed by an optional date element (the date the commentary was made), followed by an edtext element (the substance of the commentary). The date and edtext elements contain character data (see Table 7-2). The name element is discussed along with the specification header element, in Section 3.2.

Attributes

The ednote element contains two common attributes (see Section 2.1):

 id
 role

Processing Expectations

The content of this element should be suppressed in all “official” versions of a document, but in draft versions, the various parts of its content could be displayed and even given prominence.

Rationale

XML comments aren't usually sufficient for communications between authors because, in output versions of a document, comments don't appear. Having an element makes the communications more manageable and trackable, while not requiring a whole workflow system. The name and date “metadata” were made elements simply for convenience of input; in many XML-aware environments, it can be easiser to insert elements than attributes, and hopefully this will encourage their use.

The content of edtext need not be more complicated than #PCDATA because the note doesn't need to contribute to the “real” content of the document.


Section 6 Making Connections


6.1. Linking Relationships

The following table shows the expected linking relationships among pieces of information using this DTD.

Table 6-1. Linking Relationships

Source of LinkTarget of LinkOpt or ReqScope of LinkProcessing Expectations
emailExternal resourceReqURLAllow traversal from email address to resource
biblExternal resourceOptURLAllow traversal from bibliographic entry to resource
graphicExternal resourceReqURLPull in graphic data and display in place
scraplanguage in langusageReqIDREFNone
wfcwfcnoteReqIDREFGenerate the head text of the note and other surrounding text, and output in place
vcvcnoteReqIDREFGenerate the head text of the note and other surrounding text, and output in place
ntprodReqIDREFAllow traversal from the nonterminal to the production that defines it.
bibrefbiblReqIDREFAllow traversal from bibliographic reference to the bibliographic entry
locExternal resourceReqURLAllow traversal from the mention of the location to the location itself
specrefdiv1, div2, div3, inform-div1ReqIDREFGenerate, in place, an italic "[n.n], Section Title" reference based on the relevant information from the referenced division
specrefitem in olistReqIDREFGenerate, in place, the sequential number of the referenced item
specrefprodReqIDREFGenerate, in place, the number of the production in brackets
termreftermdefReqIDREFAllow traversal from the mention of the term to the location where the term is defined
titlerefExternal resourceOptURLAllow traversal from the mention of the document's title to the document itself
xntExternal resourceReqURLAllow traversal from the mention of the nonterminal to the (remote) production for it
xspecrefExternal resourceReqURLAllow traversal from the mention of the spec reference to the (remote) location where the spec is discussed.
xtermrefExternal resourceReqURLAllow traversal from the mention of the term to the (remote) location where the term is defined

6.2. Data Content Notations

Currently, no non-SGML notations have been defined. See issue 8 in Section 1.4.


6.3. Characters and Symbols

The following table summarizes the available character and symbol entities that are XML-compliant and currently available in the W3C DTD.

Table 6-2. Character Entities

Symbol NameDefinitionDescription
&amp&Ampersand
'apos'Apostrophe
>gt>Greater than sign
ldquo“Left double quotation mark
<lt&#38;#60;Less than sign
mdash--Em dash
 nbsp&#160;No break (required) space
'quot&#34;Double quotation mark
rdquo&#x201D;Right double quotation mark

Section 7 Element Classes and Mixtures

Following are the element classes and mixtures used in this DTD.


7.1. Standalone Element Classes and Mixtures

Following are the precise standalone element classes. Every class entity has the naming scheme %name.class;, and has an empty %local.name.class; entity in it for customization purposes.

Table 7-1 shows the element mixtures built up out of standalone elements. Note that some of the standalone mixtures also include the phrase-level element ednote.

Table 7-1. Standalone Mixtures

 pstatusplistspeclistnoteillusednote
%div.mix;: div1, inform-div1div2, div3, div4X XXXXX
%obj.mix;: item, def, note, wfcnote, vcnote, footnoteX XXXXX
%p.mix;: p  XXXX 
%statusp.mix;: status, statuspXXX    
%hdr.mix;: notice, abstract, pubstmt, sourcedesc, revisiondescX X   X
%termdef.mix;: termdef    XX 

7.2. Phrase-Level Element Mixtures

Following are the precise phrase-level element classes. Every class entity has the naming scheme %name.class;, and has an empty %local.name.class; entity in it for customization purposes.

Table 7-2 shows the element mixtures built up out of “character data” (here standing for #PCDATA, entity references, and character references) and phrase-level elements. Note that many phrase-level elements themselves allow phrase-level subelements; these elements are represented on both axes.

Table 7-2. Phrase-Level Mixtures

 #PCDannottermdefemphreflocrefednote
%p.pcd.mix;: p, sitem, td, quoteXXXXXXXX
%statusp.pcd.mix;: statuspXXXXXXXX
%head.pcd.mix;: headXX X X X
%label.pcd.mix;: labelXXXX X X
%eg.pcd.mix;: eg, bnfXX X   X
%termdef.pcd.mix;: termdefX termXXX X
%bibl.pcd.mix;: biblX XXX  X
%tech.pcd.mix;: code, kwX      X
rhsXnt, xnt, com
comXloc, bibref
title, subtitle, version, w3c-designation, w3c-doctype, day, month, year, name, affiliation, email, language, role, lhs, date, edtext, emph, loc, nt, term, termref, titleref, xnt, xspecref, xtermrefX