# 4 General Principles of the DTD

## 4.1 Common Attributes

All elements accept the following attributes:

`ID`

  A document-wide unique identifier that makes it possible to refer to the element:

  > `<P ID=FOO>...</P> ... <PTR TO=FOO>`

`CLASS`

  a space separated list of arbitrary identifiers that further specify the element.

  > `<NOTE CLASS=FOOT>...</NOTE>`

  would serve to indicate a footnote.

  > `<FIGURE FLOAT CLASS=PROGRAM>...</FIGURE>`

  would indicate that this floating figure contains a program.

`LANG`

  a standard 2 character code for a language. It indicates the default language within the scope of the element and is inherited unless explicitly overriden. It serves e. g. to obtain appropriate language dependent services such as hyphenation and quote delimiters.

  EN

    english

  DE

    german

  FR

    french

`PROGLANG`

  this is rather similar to attribute LANG but for programming languages.

  OZ

  GUMP

  C

  CC

    C++

  ELISP

    Emacs Lisp

## 4.2 Display/Inline phrase elements

Phrase elements are contained in paragraphs. But they can be either inline or displayed, and some can be either. `NAME` is always rendered inline. `MATH` is usually inline, but can be rendered displayed through the use of the `DISPLAY` attribute:

> `<MATH DISPLAY>...</MATH>`

Lists are usually displayed, but you could request an inline enumeration as follows:

> `<LIST INLINE ENUM>...</LIST>`

The default of whether to be inline or displayed is whatever makes the most sense for the element. When both are possible, the non default case can be explicitly requested using either `INLINE` or `DISPLAY`.

## 4.3 External Resources

some elements have variants whose data comes from an external resource rather than from within the document itself: the name of such an element is obtained by concatenating `.EXTERN` to the usual name, e. g.:

> `<PTR.EXTERN TO='...'>
> <MATH.EXTERN TO='...'>
> <PICTURE.EXTERN TO='...'>`

## 4.4 References

some elements can make references either to some other element within the document or to some external resource. This is effected through attribute `TO` and may be further specified with attribute `KEY`.

For references within the same document `TO` should have as value an `ID`; for external references, the value is arbitrary, but usually follows a recognizable syntax such as a url. `KEY` is arbitrary, its interpretation will depend on the kind of thing which is being referred to.