dtsdldtd(other)

๐Ÿ“ฆ
version 2.5.3 ยท 2 versions
, in nixos 26.05

๐Ÿ’– dtsdldtd โ€” Semantic Delivery Language (SDL) format and semantics

ok so bestie, this is the dtsdldtd(other) page and it's literally the blueprint for SDL ๐ŸŽ€ like the whole format-and-semantics tea, no cap. Buckle up, it's giving reference manual but make it iconic โœจ


๐ŸŒธ NAME

dtsdldtd โ€” Semantic Delivery Language (SDL) format and semantics ๐Ÿ’…


โœจ DESCRIPTION

so Semantic Delivery Language (SDL) is defined by a Standard Generalized Markup Language (SGML) document type description (DTD). periodt. ๐Ÿ“œ

the language uses generalized presentation-oriented markup, and it excludes typical SGML features that may prevent performance-oriented, on-line delivery systems from using the language ๐Ÿ‘€ โ€” like, it's deliberately lean so the on-line delivery girlies can actually go fast. highkey a vibe.

๐Ÿฆ‹ Dependencies

None. literally none. not a single one. we love a low-maintenance icon ๐Ÿซถ

๐Ÿ™ˆ Issues

None. zero notes, she's flawless ๐Ÿ’…โœจ


๐Ÿ‘‘ TOP LEVEL ELEMENTS

SDLDOC

๐ŸŽฏ Purpose

The top of the document hierarchy. like, the main character of the whole document tree ๐ŸŒณ๐Ÿ‘‘

๐Ÿ“œ SYNOPSIS

&<!ELEMENT sdldoc      - - (vstruct, head*, snb?, virpage+) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST sdldoc
                          pub-id       CDATA           #REQUIRED
                          doc-id       CDATA           #REQUIRED
                          timestmp     CDATA           #REQUIRED
                          first-page   IDREF           #IMPLIED
                          product      CDATA           #IMPLIED
                          prodpn       CDATA           #IMPLIED
                          prodver      CDATA           #IMPLIED
                          license      CDATA           #IMPLIED
                          language     CDATA           #IMPLIED
                          charset      CDATA           #IMPLIED
                          author       CDATA           #IMPLIED
                          version      CDATA           #IMPLIED
                          sdldtd       CDATA           #REQUIRED
                          srcdtd       CDATA           #IMPLIED >
tgroup dispwid="5.39in"

๐Ÿ’ฌ DESCRIPTION

the document element, sdldoc, is the top of the document hierarchy โ€” the root, the queen bee ๐Ÿโœจ There are several attributes used in identifying the applicability of this document. Version and language attributes list options available for qualifying selected sections of the document. iykyk ๐Ÿ”ฅ

The attributes of sdldoc are:

  • pub-id CDATA Required โ€” The public identifier is used to represent a document. It is analogous to a part number. ๐Ÿท๏ธ
  • doc-id CDATA Required โ€” The document identifier is specific to this version (instance) of a document. It is analogous to a manufacturing part number. ๐Ÿ”–
  • timestmp CDATA Required โ€” The time stamp distinguishes documents that have not changed enough to warrant a new doc-id, but might need some bookmark/annotation cleanup or repair. ๐Ÿ•ฐ๏ธ
  • first-page IDREF Optional โ€” If specified, the first-page attribute identifies the virtual page to display upon first entering the document. ๐Ÿšช
  • product CDATA Optional โ€” A description of the product this document describes. ๐Ÿ“ฆ
  • prodpn CDATA Optional โ€” The part number of the product this document describes. ๐Ÿ”ข
  • prodver CDATA Optional โ€” The version level of the product this document describes. โฌ†๏ธ
  • license CDATA Optional โ€” Product license information. By default, no license restrictions are applied. ๐Ÿ“„
  • language CDATA Optional โ€” The default language of the document. This attribute may be overridden in later elements. The language attribute and the charset attribute of elements are used to select the proper font for display. ๐ŸŒ
  • charset CDATA Optional โ€” The default character set of the document. This attribute may be overridden in later elements. The charset attribute and the language attribute are used to select the proper font for display. ๐Ÿ”ค
  • author CDATA Optional โ€” The source author or publisher of the document. โœ๏ธ
  • version CDATA Optional โ€” The default version of this document. This attribute may be overridden in later elements. ๐Ÿท๏ธ
  • sdldtd CDATA Required โ€” The version level of the SDL DTD to which this document conforms. This attribute is specified as &<major>.&<minor> version. For example, 1.0. ๐Ÿšจ A change in the minor version number implies a change that is backward compatible, albeit with potentially reduced functionality in an older viewer. A change in the major version implies an incompatible change to the DTD. ๐Ÿ’€
  • srcdtd CDATA Optional โ€” The name of the DTD to which the source document conformed. ๐Ÿ“š

VSTRUCT

๐ŸŽฏ Purpose

The container for all generated elements. like a little basket for everything the conversion process made ๐Ÿงบโœจ

๐Ÿ“œ SYNOPSIS

&<!ELEMENT vstruct        - - (loids, toss?, lophrases?,
                          index?, rel-docs?, rel-file?,
                          notes?) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.09in"
&<!ATTLIST vstruct      version    CDATA        #IMPLIED
                        doc-id     CDATA        #REQUIRED>

๐Ÿ’ฌ DESCRIPTION

The vstruct element is a container for all generated elements. Generated elements are items such as a list of identifiers in the document, a table of semantics and styles, and an index. ๐Ÿ‘‘

The contents of this element are the normalized navigation information elements generated by the conversion process. No actual document content should be encoded within these elements. ๐Ÿšซ like fr fr, navigation only, don't sneak content in there bestie ๐Ÿ˜ค

The attributes of vstruct are:

  • version CDATA Optional โ€” The version of this element. By default, the version of the vstruct is the same as the version of the document (sdldoc). ๐Ÿท๏ธ
  • doc-id CDATA Required โ€” The document identifier of the document to which this element belongs. ๐Ÿ”–
ngl there's also a stray tgroup dispwid="5.75in" floating in this one's layout ๐Ÿซ  iconic formatting moment

VIRPAGE

๐ŸŽฏ Purpose

The smallest directly addressable unit in a document. tiny but mighty, the literal building block ๐Ÿ’Ž

๐Ÿ“œ SYNOPSIS

&<!ELEMENT virpage      - - (head*, snb?, (block | form)*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST virpage        id         ID           #REQUIRED
                          level      NUMBER       #REQUIRED
                          version    CDATA        #IMPLIED
                          language   CDATA        #IMPLIED
                          charset    CDATA        #IMPLIED
                          doc-id     CDATA        #REQUIRED
                          ssi        CDATA        #IMPLIED >
tgroup dispwid="5.39in"

โœจ DESCRIPTION โœจ

okay so the virtual page (virpage) element is literally the smallest, directly addressable unit in a document, bestie. it's givingโ€ฆ a topic. ๐Ÿ’… ideally, documents presented on-line (and maybe even on paper, who knows) should be organized into small topics that are complete unto themselves. this lets readers find and access the info they want without scrolling forever, fr fr.

a virtual page contains all the info necessary to establish a formatting context. like, virtual pages can be displayed and understood even when you remove them from the context of the document, as long as the table of semantics and styles (toss) element is available for formatting info. no cap.

a virtual page can have zero or more head elements that provide title info and can also be used in display decoration, like a title bar. the first head of a virtual page is intended to be displayed in a table of contents for the document. periodt.

following the head elements is an optional system notation block (snb). the system notation block gives access to objects external to the document, and it's covered later in this document. iykyk.

finally, a virtual page may contain any combination of block or form elements, including none. so like, it can be empty. no biggie.

the attributes of virpage are:

  • id โ€” ID, Required. The identifier of the virtual page. The id attribute must be a valid SGML identifier and must be unique within the document. To display a virtual page, hyperlink to this id.
  • level โ€” NUMBER, Required. The hierarchical level of the info contained in the element. The level attribute makes explicit info that is implicit in typical SGML conforming documents. An SDL conforming document may be considered to have been flattened to allow direct access of inferior topics. For example, if the source DTD specified divisions such as chapter, d1, d2, these would all appear in the SDL version of the document as virtual pages but with levels of 1, 2 and 3, respectively.
  • version โ€” CDATA, Optional. The version of this element. By default, the version of the virpage is the same as the version of the document (sdldoc).
  • language โ€” CDATA, Optional. The language in which this element is written. This attribute may be overridden individually within the form and block elements contained in the virtual page.
  • charset โ€” CDATA, Optional. The default character set of the document. This attribute may be overridden individually within the form and block elements contained in the virtual page.
  • doc-id โ€” CDATA, Required. The document identifier of the document to which this element belongs.
  • ssi โ€” CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD or other source to SDL translator. It may either reflect the meaning of the markup in the original document or may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL conforming document by preserving the original intent of the markup. When the original markup was conforming to a domain specific DTD, the ssi may be used to enable structured searches of the SDL conforming document by preserving the original generic identifiers.

also there's this: tgroup dispwid="6.19in" ๐Ÿ’–

the level and ssi attributes of the virtual page are used to look up formatting and semantic info in the table of semantics and styles (toss) element, which is covered later in this document. slay.


โœจ SNB โœจ

๐Ÿ’– Purpose ๐Ÿ’–

the container for all references to objects external to the document. literally just a container. ๐ŸŽ€

๐ŸŒธ SYNOPSIS ๐ŸŒธ

&<!ELEMENT snb            - - (head?, (graphic | text | audio |
                          video |animate | crossdoc | man-page |
                          textfile | sys-cmd | callback | script |
                          switch)+) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.39in"
&<!ATTLIST snb            version     CDATA       #IMPLIED >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="5.39in"

โœจ DESCRIPTION โœจ

the system notation block (snb) provides a container for elements that access data that are not in SGML notation. the one exception to this rule is the text element. the text element is in the system notation block because it's intended for use as a rich text alternative to other elements in the snb when elements are tried in turn during the instantiation of a system notation reference (snref) looking for an alternative that can be formatted on the current system. bestie, that's a mouthful but you got this. ๐Ÿ’…

data in the system notation block are not intended to be presented to the reader in the order that they appear in the document. the structural position of each snb element is established by a system notation reference. so don't just read it top to bottom, okay?

collecting all elements that require system resources at the top of the virtual page allows an application to marshal these resources before they're referenced. this gives the application the ability to alter the presentation of both the element and its reference based on the availability and performance of the required system resources. highkey useful.

the optional head element may be used by an application when presenting a list of required resources for a document. cute.

the attribute of snb is:

  • version โ€” CDATA, Optional. The version of this element. By default, the version of the snb is the same as the version of the document (sdldoc).

tgroup dispwid="6.27in"


โœจ BLOCK โœจ

๐Ÿ’– Purpose ๐Ÿ’–

the basic unit of display style. that's it. that's the purpose. ๐Ÿฆ‹

๐ŸŒธ SYNOPSIS ๐ŸŒธ

&<!ELEMENT block     - - (head*, (p | cp)*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST block     id         ID                   #IMPLIED
                     level      NUMBER               #IMPLIED
                     version    CDATA                #IMPLIED
                     class      (table       |
                                cell         |
                                list         |
                                item         |
                                text         |
                                udeffrmt     )       #IMPLIED
                     language   CDATA                #IMPLIED
                     charset    CDATA                #IMPLIED
                     length     NUMBER               #IMPLIED
                     app        (all         |
                                help         |
                                tutorial     |
                                ref          |
                                sys          )       #IMPLIED
                     timing     (sync        |
                                async        )       #IMPLIED
                     ssi        CDATA                #IMPLIED >

ok so quick recap before we get into it: blocks. they're the whole vibe. ๐Ÿ’… now let's talk about what's inside them.

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

Blocks are the basic unit of display style. literally the atomic level of "how does this look." Every single piece of data inside a block gets rendered in the style of the block that contains it. that's the rule, no exceptions, we don't argue with the container. ๐Ÿซถ

A block may contain zero or more head elements followed by zero or more paragraphs (p) or character paragraphs (cp).

Structurally, blocks hold a set of logically related paragraphs. important distinction bestie: a block identifies a display chunk, not a document hierarchy element. and here's the key thing โ€” blocks have an inherently flat structure. blocks do not nest. ๐Ÿ˜ญ i know. if you want the presentational effect of nested blocks, you use the level attribute instead. work smarter, not harder.


๐ŸŒธ the three views situation ๐ŸŒธ

A document's structure includes blocks that are part of the principal view and, optionally, blocks that form an alternate view.

The principle view assumes that primary blocks are presented in order as the sequential content of the document. so like โ€” when you take the primary blocks in order, that is the principle view of the document. for the purpose of this language, the principle view is the same as the traditional, printed view. periodt. ๐Ÿ“–

An alternate block is asynchronous to the primary document order. alternate blocks can represent traditional, asynchronous elements like a footnote or a spread, or some additional documentation (a teacher's section of a combined teacher/student manual, for example โ€” love that for them). Alternate content blocks should only be included in the primary content by reference. don't just shove them in there, that's not the move.


๐Ÿฆ‹ the toss lookup ๐Ÿฆ‹

The level, class and ssi attributes of a block can be used to look up formatting and semantic information in the table of semantics and styles (toss) element โ€” which is covered later in this document, so hold that thought. ๐Ÿ”ฅ


โœจ the attributes of block โœจ

  • id โ€” type ID, Optional. The identifier of the block. The id attribute must be a valid SGML identifier and must be unique within the document. no duplicates, we're not doing that here. ๐Ÿ’…
  • level โ€” type NUMBER, Optional. The hierarchical level of the information contained in the element. The level attribute makes explicit information that is implicit in typical SGML-conforming documents. An SDL-conforming document may be considered to have been flattened with implicit block nesting information stored in the level attribute. iykyk. ๐Ÿงš
  • version โ€” type CDATA, Optional. The version of this element. By default, the version of the block is the same as the version of the document (sdldoc) โ€” unless that version has been overridden by a version attribute in the virtual page (virpage) or form (covered later in this document) containing the block. chain of command, basically. ๐Ÿ‘‘
  • class โ€” type one of table, cell, list, item, text, udeffrmt, Optional. The class of a block describes the general purpose the block is filling. The class attribute is used in conjunction with the level and ssi attributes to perform a lookup in the table of semantics and styles (toss) element. The result of that lookup is formatting and semantic information pertaining to the block. so it's like, the block's whole personality gets looked up. ๐ŸŒˆ
  • language โ€” type CDATA, Optional. The language in which this block was written. ๐ŸŒ
  • charset โ€” type CDATA, Optional. The character set of this block. The language and charset attributes plus information retrieved from the table of semantics and styles (toss) element are used to select the font for the block. font selection is a whole collaborative process apparently. ๐Ÿ’–
  • length โ€” type NUMBER, Optional. By default, the length of a block is determined dynamically as a function of its content and rendering style. If a length value is present, it describes the length of the block in terms of current style lines. dynamic by default, but you can pin it. ur choice. ๐ŸŽ€
  • app โ€” type one of all, help, tutorial, ref, sys, Optional. The app attribute is used for selective presentation of a block. This attribute defaults to all. ๐Ÿ‘€
  • timing โ€” type one of sync, async, Optional. The timing attribute defaults to sync. A block with a timing attribute of async is only displayed when referenced via an IDREF (or IDREFS). For example, an async block may be referenced by the cells attribute of frowvec to repeat the block without reentering its data content. reuse queen behavior, honestly. โ™ป๏ธ
  • ssi โ€” type CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup conforms to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. it's giving โœจreceiptsโœจ for the original markup. keep the paper trail, bestie. ๐Ÿ“
small formatting footnote from the original: this table was laid out with tgroup dispwid="6.49in". not content, just so you know nothing's missing. ๐Ÿ“

๐Ÿฆ‹ FORM ๐Ÿฆ‹

๐ŸŒŸ Purpose ๐ŸŒŸ

A two dimensional array of block and/or form elements. yes. two dimensional. it's a grid, it's a whole little ecosystem, and it can contain forms inside it because forms are brave like that. ๐Ÿซถ

๐ŸŒŸ SYNOPSIS ๐ŸŒŸ

&<!ELEMENT form           - - (head*, (fstyle, fdata) |
                                 (fdata, fstyle)) >
this next bit was laid out with tgroup dispwid="5.28in" in the original โ€” again, just table geometry, nothing lost. ๐Ÿ’…
&<!ATTLIST form     id         ID                   #IMPLIED
                    level      NUMBER               #IMPLIED
                    version    CDATA                #IMPLIED
                    class      (table       |
                               cell         |
                               list         |
                               item         |
                               text         |
                               udeffrmt     )       #IMPLIED
                    language   CDATA                #IMPLIED
                    charset    CDATA                #IMPLIED
                    length     NUMBER               #IMPLIED
                    app        (all         |
                               help         |
                               tutorial     |
                               ref          |
                               sys          )       #IMPLIED
                    ssi        CDATA                #IMPLIED >

so form takes the exact same attribute squad as block โ€” id, level, version, class, language, charset, length, app, ssi, all #IMPLIED โ€” and the content model is head* followed by either (fstyle, fdata) or (fdata, fstyle). fstyle first or fdata first, either order, both valid. ๐Ÿค and that's the form tea for now โ€” more coming, don't go anywhere. ๐Ÿ’œ

okay so the form element is basically the glow-up of a data element โ€” a generalized representation of a data element that's partially preformatted, bestie. it's literally designed to be rendered in real time and automatically derived from your typical SGML table markup. uses include tables, lists and labeled lists. and honestly? generally, a form may be used to represent any information that is layout sensitive or contains data to be presented in a two dimensional matrix. iconic behavior honestly ๐Ÿซถ

a form is made up of zero or more head elements followed either by a form style (fstyle) and the form data (fdata) or the form data followed by the form style. order is flexible, she's versatile like that โœจ

the attributes of form are, and listen, i'm listing every single one because we don't skip:

  • id โ€” type ID, optional. the identifier of the form. the id attribute must be a valid SGML identifier and must be unique within the document. no duplicates, bestie, that's the whole vibe ๐Ÿ’…
  • level โ€” type NUMBER, optional. the hierarchical level of the information contained in the element. the level attribute makes explicit information that is implicit in typical SGML-conforming documents. an SDL-conforming document may be considered to have been flattened with implicit form nesting information stored in the level attribute. iykyk ๐ŸŒ€
  • version โ€” type CDATA, optional. the version of this element. by default, the version of the form is the same as the version of the document (sdldoc) unless that version has been overridden by a version attribute in the virtual page (virpage) containing the form.
  • class โ€” type table, optional โ€” and the class of a form describes the general purpose the form is filling. the allowed values are table, cell, list, item, text and udeffrmt. the class attribute is used in conjunction with the level and ssi attributes to perform a lookup in the table of semantics and styles (toss) element. the result of that lookup is formatting and semantic information pertaining to the form ๐ŸŽ€
  • language โ€” type CDATA, optional. the language in which this form was written.
  • charset โ€” type CDATA, optional. the character set of this form. the language and charset attributes plus information retrieved from the table of semantics and styles (toss) element are used to select the font for the form. font selection is giving curated ๐Ÿ’–
  • length โ€” type NUMBER, optional. by default, the length of a form is determined dynamically as a function of its content and rendering style. if a length value is present, it describes the length of the form in terms of current style lines.
  • app โ€” type all, optional โ€” the app attribute is used for selective presentation of a form. allowed values: all, help, tutorial, ref, sys. this attribute defaults to all.
  • ssi โ€” type CDATA, optional. a source semantic identifier. this identifier is chosen by the author of a higher level DTD to SDL translator. it may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. author's choice, no cap ๐Ÿ”ฅ

and then there's this lil artifact that just lives at the end of the block:

tgroup dispwid="6.21in"

don't ask, she's just there ๐Ÿ’€


โœจ FSTYLE โœจ

๐Ÿฆ‹ Purpose ๐Ÿฆ‹

specify the style of a form. that's the whole job. ๐ŸŒธ

SYNOPSIS

&<!ELEMENT fstyle     - - (frowvec+) >

DESCRIPTION

the form style (fstyle) element specifies the style of the form. it's composed of one or more row reference vectors (frowvec). the list of cell id references in the reference row vectors establishes the relationship between the position and data block for a cell. like, it's the map from "where are we" to "what goes here" ๐Ÿ—บ๏ธ

the fstyle element and the formstyle element in the table of semantics and styles (toss) element (covered later in this document, so hold that thought ๐Ÿซถ) contain information regarding the presentational style of the form. cell-specific style and style attributes beyond those provided in the reference vectors must be specified in the data blocks that contain the cell data. no sneaking extra styling in through the back door, bestie ๐Ÿ™ˆ

the attribute of fstyle is:

  • ncols โ€” type NUMBER, optional. the number of columns in the form. this attribute should be a number greater than zero. unless overridden by a column width (colw) specification in the toss, the available space is divided evenly among the columns. unless overridden by a column justification (colj) specification in the toss, the block and/or form elements in the form are left justified in their cells. fair and square, evenly distributed, slay โญ

๐Ÿ‘‘ FROWVEC ๐Ÿ‘‘

๐ŸŒˆ Purpose ๐ŸŒˆ

describes the style of a row and contains ID references to the contents of the row. row vibes + row receipts, all in one ๐ŸŽ€

SYNOPSIS

&<!ELEMENT frowvec      - O EMPTY >
&<!ATTLIST frowvec        hdr        (YES|NO)     #IMPLIED
                          cells      IDREFS       #REQUIRED >
tgroup dispwid="5.39in"

and yes, that tgroup dispwid="5.39in" line is just chilling there too. leave her be ๐Ÿ’€

...so yeah, the reference row vector (frowvec) is literally the vibe-sheet for one row in a form โ€” it describes the style of that row and holds pointers (id references) to what's actually in the row. Important: there must be a row vector per row in the form. No skipping, bestie, one per row. ๐Ÿ’…

The hdr attribute is the one that flags the entire row as a head row. Why do heads matter? Because a display program might need to handle showing heads differently than it does the data matrix โ€” and that's especially true if the form has to scroll, covers multiple screens, or gets displayed as a graph. Heads are main character energy, basically. ๐Ÿ‘‘

The attributes of frowvec are:

  • hdr โ€” values yes / no โ€” Optional โ€” indicates whether or not the associated row is a head row.
  • cells โ€” IDREFS โ€” Required โ€” a list of id references to the block or form elements in the fdata element that make up the cell contents of this form.

tgroup dispwid="6.00in"


Within a form element, spanning rows or columns is done by repeating the appropriate id reference in the cells attribute of the frowvec. And listen โ€” if the data needs to be repeated in multiple unspanned cells, the block has to be repeated too and given unique identifiers. No copy-paste shortcuts, the DTD said what it said. ๐Ÿ™ˆ

The length of a row is the length of the cells in that row; the width is the cumulative width of each cell in that row. Row length may be determined at or before runtime. Typically, the length of a row is the length of the longest block or form in the row. But โ€” plot twist โ€” there are two exceptions to this rule:

  1. the blocks or forms in the row can have an assigned length, or
  2. the id reference could be to an element that is not in the data container.

These exceptional cells are called virtual cells, and virtual cells do not affect the length of the row. Periodt. โญ

Virtual cells may contain more data than can be displayed in the area assigned โ€” think blocks with the length set that contain long paragraphs, forms, or figures. The actual display area of a virtual cell can be thought of as a viewport onto the data of a cell. Alternatively, virtual cells can use an information-hiding technique such as an icon leading to a separate window. Icon as a little doorway? We love a hidden-gem moment. ๐Ÿฆ‹

Also, the id references in a reference row may specify elements that are not in the data container of its form โ€” even if the elements are not physically close. To protect the performance of the form element, references to data outside the current form may also be handled as virtual cells. And the display program may take the liberty to replace any information referenced in a row vector that does not belong to the current form's data element with a link or icon. Rude? Maybe. Allowed? Yep. ๐Ÿ’€

๐Ÿ“ FDATA ๐Ÿ“

Purpose

A container for information belonging solely to a form element.

SYNOPSIS

&<!ELEMENT fdata      - - ((block | form)*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

DESCRIPTION

The form data element (fdata) is a container for information that belongs to a form. By default โ€” meaning no spanning and no external references โ€” form data is typically maintained in row-major matrix form. But heads up: assumptions about the order of the block or form elements in the data area must not be used for anything except performance, because the blocks are allowed to be represented in any order. So don't build your whole personality on element order, okay? ๐Ÿ˜ญ

The fdata element has no attributes. That's it. Nothing. Clean. Minimalist icon. โœจ

๐Ÿงš CONTAINER ELEMENTS ๐Ÿงš

P

Purpose

A paragraph.

SYNOPSIS

&<!ELEMENT p              - - (head*, (key | sphrase | rev | if |
                          spc | snref | anchor |  link | #PCDATA)+)
                          >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.50in"
&<!ATTLIST p     id        ID                  #IMPLIED
                 version   CDATA               #IMPLIED
                 type      (literal    |
                           lined       |
                           dynamic     )       #IMPLIED
                 ssi       CDATA               #IMPLIED >

DESCRIPTION

Paragraphs identify a formatting unit. Basically, paragraphs collect information that needs to be rendered contiguously within a region. They inherit style from their containing block, although adjustments can be made by using the class and level attributes of the enclosing block plus the ssi attribute of the p to effect a lookup in the table of semantics and styles (toss) element (covered later in this document โ€” stay tuned ๐Ÿ‘€).

Paragraphs may contain text, references, and key phrases. The key element (discussed later in this document) may modify the style of a portion of a paragraph, but that modification is always restricted to the current paragraph. No leaking your style choices into the next paragraph, bestie. ๐ŸŽ€

The attributes of p are:

  • id โ€” ID โ€” Optional โ€” the identifier of the p. The id attribute must be a valid SGML identifier and must be unique within the document.
  • version โ€” CDATA โ€” Optional โ€” the version of this element. By default, the version of the p is the same as the version of the document (sdldoc) unless that version has been overridden by a version attribute in the virtual page (virpage), form, or block containing the p.
  • type โ€” literal / lined / dynamic โ€” Optional โ€” paragraph text may be either unformatted or preformatted. By default, paragraph text is assumed dynamic (unformatted) and all white space (space, tab, newline, etc.) may be replaced with a single space. The type attribute is used when the author needs to represent information that is at least partially layout-sensitive. Newline characters are significant in lined paragraphs and all whitespace is significant in literal paragraphs. Translation: literal is the "do not touch my spacing" queen, lined cares about your newlines, dynamic is chill and lets the whitespace get squished. ๐Ÿ’œ
  • ssi โ€” CDATA โ€” Optional โ€” a source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup was conforming to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. iykyk โ€” it's your paper trail back to the original markup. ๐Ÿ”ฅ

tgroup dispwid="5.92in"

CP

Purpose

A character paragraph.

SYNOPSIS

&<!ELEMENT cp     - - (CDATA) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST cp      id        ID                 #IMPLIED
                   version   CDATA              #IMPLIED
                   type      (literal   |
                             lined      |
                             dynamic    )       #IMPLIED
                   ssi       CDATA              #IMPLIED >

๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so character paragraphs are basically paragraphs' quirky little sibling โœจ They're super similar to paragraphs โ€” the only difference is that any markup sitting inside the text of a character paragraph gets ignored. Like, completely. Not read. Not parsed. Nothing. ๐Ÿ™ˆ

The one and only markup that does not get ignored is the &</ character pair โ€” that's the special little guy ๐ŸŽ€ And heads up bestie: if you actually want that pair to show up in your text, you gotta put an ampersand in front of it, like &&.


๐Ÿฆ‹ The attributes of cp ๐Ÿฆ‹

  • id โ€” ID โ€” Optional โ€” the identifier of the p. Ngl this one has rules: the id attribute must be a valid SGML identifier and must be unique within the document. No duplicates, periodt. ๐Ÿ‘‘
  • version โ€” CDATA โ€” Optional โ€” the version of this element. Lowkey by default, the version of the p is the same as the version of the document (sdldoc) โ€” unless that version got overridden by a version attribute in the virtual page (virpage), form, or block containing the p. iykyk ๐Ÿ’…
  • type โ€” literal | lined | dynamic โ€” Optional โ€” so paragraph text can be either unformatted or preformatted. By default, paragraph text is assumed to be dynamic (unformatted), and all white space (space, tab, newline, etc.) may be replaced with a single space. The type attribute is what you reach for when the author needs to represent information that's at least partially layout-sensitive ๐Ÿ˜ญ Newline characters are significant in lined paragraphs, and all whitespace is significant in literal paragraphs. fr fr, that distinction matters. โญ
  • ssi โ€” CDATA โ€” Optional โ€” a source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator ๐Ÿงš It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. And when the original markup was conforming to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. slay, searching. ๐Ÿ”

and then right after all that the doc just drops this little layout artifact:

tgroup dispwid="6.17in"

โœจ Purpose โœจ

Heading, label or caption. That's it, that's the whole vibe check. ๐Ÿ‘‘


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

&<!ELEMENT head           - - ((key | sphrase | rev | if | spc |
                             snref | anchor | link | #PCDATA)*,
                             subhead*) >

&<!ATTLIST head      id         ID                  #IMPLIED
                     version    CDATA               #IMPLIED
                     class      (label       |
                                  head         |
                                  caption      |
                                  annotation   |
                                  phead        |
                                  udefhead     )      #IMPLIED
                     language   CDATA               #IMPLIED
                     charset    CDATA               #IMPLIED
                     type       (literal     |
                                  lined        |
                                  dynamic      )      #IMPLIED
                     abbrev     CDATA               #IMPLIED
                     ssi        CDATA               #IMPLIED >

like, look at all those #IMPLIED โ€” every single one of these is optional, bestie ๐Ÿซถ and class has a whole little menu to pick from: label, head, caption, annotation, phead, udefhead. iconic. ๐Ÿ’œ

๐Ÿ’– DESCRIPTION ๐Ÿ’–

Okay bestie, so a head is basically a phrase-like element thatโ€™s associated with the entire section that contains it. Heads may contain zero or more subhead elements followed by zero or more paragraphs.

The head element may also be used as the caption of a graphic (covered later in this document).

The user-defined head (udefhead) value is for use by the developer of a higher level DTD to SDL translator when an unexpected use for a head is found.

The attributes of head are literally these, no cap:

  • id โ€” ID, Optional. The identifier of the head. The id attribute must be a valid SGML identifier and must be unique within the document.
  • version โ€” CDATA, Optional. The version of this element. By default, the version of the head is the same as the version of the document (sdldoc) unless that version has been overridden by a version attribute in the virtual page (virpage), form or block containing the head.
  • class โ€” label, Optional. The class of a head describes the general purpose the head is filling. The values are head, caption, annotation, phead, and udefhead. The class attribute is used in conjunction with the level of the object containing the head and ssi attributes to perform a lookup in the table of semantics and styles (toss) element. The result of that lookup is formatting and semantic information pertaining to the head.
  • language โ€” CDATA, Optional. The language in which this head was written.
  • charset โ€” CDATA, Optional. The character set of this head. The language and charset attributes plus information retrieved from the table of semantics and styles (toss) element are used to select the font for the head.
  • type โ€” literal, Optional. Head text may be either unformatted or preformatted. The values are lined and dynamic. By default, paragraph text is assumed to be dynamic (unformatted) and all white space (space, tab, newline, etc.) may be replaced with a single space. The type attribute is used when the author needs to represent information that is at least partially layout-sensitive. Newline characters are significant in lined heads and all whitespace is significant in literal heads.
  • abbrev โ€” CDATA, Optional. An abbreviation allows simple and/or short text to be associated with a head element. This text may be used in situations where rich text is inappropriate or where the head is too long to use.
  • ssi โ€” CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup conforms to a domain specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers.

And yeah, the little layout gremlin line is literally tgroup dispwid="6.27in".


๐Ÿฆ‹ SUBHEAD ๐Ÿฆ‹

โœจ Purpose โœจ

Alternate or additional headings, labels or captions. Thatโ€™s the whole vibe.

๐Ÿ’ซ SYNOPSIS ๐Ÿ’ซ

       &<!ELEMENT subhead        - - ((key | sphrase | rev |  if | spc
                                 | snref | anchor | link | #PCDATA)*)
                                 >
       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
       tgroup dispwid="6.49in"
       &<!ATTLIST subhead        id         ID                   #IMPLIED
                                 version    CDATA                #IMPLIED
                                 class      (label       |
                                            head         |
                                            caption      |
                                            annotation   |
                                            phead        |
                                            udefhead     )       #IMPLIED
                                 language   CDATA                #IMPLIED
                                 charset    CDATA                #IMPLIED
                                 type       (literal     |
                                            lined        |
                                            dynamic      )       #IMPLIED
                                 abbrev     CDATA                #IMPLIED
                                 ssi        CDATA                #IMPLIED >
       tgroup dispwid="5.81in"

And the last little layout line is tgroup dispwid="5.81in" โ€” periodt ๐Ÿ’…

the subhead deets, in table form ๐Ÿ’…

okay so real quick โ€” these are the attributes of subhead, and yes there's a whole little table of them. buckle up bestie:

  • id โ€” type ID, Optional. it's the identifier of the subhead. and listen: the id attribute must be a valid SGML identifier and must be unique within the document. no duplicates, periodt. ๐Ÿšซ
  • version โ€” type CDATA, Optional. the version of this element. by default, the version of the subhead is the same as the version of the document (sdldoc) โ€” unless that version has been overridden by a version attribute in the virtual page (virpage), form, block or head containing the subhead. so like, it inherits, but the vibes can be overridden upstream. ๐ŸŒ€
  • class โ€” type label, Optional. the class of a subhead describes the general purpose the subhead is filling. the class attribute is used in conjunction with the level of the object containing the head to which the subhead belongs and the ssi attributes to perform a lookup in the table of semantics and styles (toss) element. the result of that lookup is formatting and semantic information pertaining to the subhead. iykyk. the values it can take, for the record: label, head, caption, annotation, ssi, phead, udefhead. that's the whole roster, no additions. ๐Ÿ“‹
  • language โ€” type CDATA, Optional. the language in which this subhead was written. ๐ŸŒ
  • charset โ€” type CDATA, Optional. the character set of this subhead. the language and charset attributes plus information retrieved from the table of semantics and styles (toss) element are used to select the subhead font. so like, font selection is a collab. ๐ŸŽ€
  • type โ€” type literal, Optional. subhead text may be either unformatted or preformatted, okay? by default, subhead text is assumed to be dynamic (unformatted) and all white space (space, tab, newline, etc.) may be replaced with a single space. the type attribute is used when the author needs to represent information that is at least partially layout-sensitive. newline characters are significant in lined subheads and all whitespace is significant in literal subheads. so if your spacing matters, say so loudly. ๐Ÿ˜ค the values: literal, lined, dynamic.
  • abbrev โ€” type CDATA, Optional. an abbreviation allows simple and/or short text to be associated with a subhead element. this text may be used in situations where rich text is inappropriate or where the subhead is too long to use. it's the โœจshort versionโœจ.
  • ssi โ€” type CDATA, Optional. a source semantic identifier. this identifier is chosen by the author of a higher level DTD to SDL translator. it may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. the source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. when the original markup conforms to a domain specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. (yes that's a lot of words, but it's literally all load-bearing, i promise ๐Ÿซถ)
tgroup dispwid="6.10in"

โš“ ANCHOR โš“

๐ŸŽฏ Purpose

to give an ID to a point in the document. that's it. that's the whole job. iconic little guy. ๐Ÿ’ซ

โœจ SYNOPSIS โœจ

&<!ELEMENT anchor      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST anchor      id      ID      #REQUIRED >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿ“– DESCRIPTION ๐Ÿ“–

the anchor element provides a mechanism for assigning an ID to an arbitrary spot in the document. an anchor may occur anywhere that running text is allowed โ€” and yes that includes as content of paragraphs (p) and heads (head and subhead). so it's flexible like that. ๐ŸŒธ

the attribute of anchor is:

  • id โ€” type ID, Required. the identifier of the anchor. the id attribute must be a valid SGML identifier and must be unique within the document. no reruns, no dupes, one of a kind. ๐Ÿ‘‘
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.10in"

๐ŸŽฏ Purpose

a hyperlink within or outside the current document. yes bestie, links. in this economy. ๐Ÿ”ฅ

โœจ SYNOPSIS โœจ

&<!ELEMENT link           - - ((key | sphrase | rev |  if | spc |
                          snref | anchor | link | #PCDATA)+) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.39in"
&<!ATTLIST link           rid         IDREF              #REQUIRED
                          button      IDREF              #IMPLIED
                          linkinfo    CDATA              #IMPLIED
                          descript    CDATA              #IMPLIED
                          window      (current   |
                                      new        |
                                      popup      )       #IMPLIED
                          traversal   (return    |
                                      noreturn   )       #IMPLIED
tgroup dispwid="5.90in"

and that's where we're at โ€” more coming, don't go anywhere ๐Ÿ’œ

๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so a link element is literally the start point of a hyperlink to another spot in the document or, via the system notation block (snb), to another document or active hyperlink. The active hyperlinks are sys-cmd and callback. These hyperlinks (covered later in this document) are used to execute an operating system command or to initiate a callback to the application respectively. no cap.

A link may surround any text in the document, including text found in paragraphs or heads, with the only exception being that link elements may not contain other link elements. that part is important, bestie ๐Ÿ’…

The attributes of link are:

  • rid โ€” IDREF โ€” Required โ€” the ID of the target of the hyperlink. The ID specified must exist in the current document but may be to elements in the system notation block (snb) of the current virtual page (virpage) to allow reference to external objects or actions. ๐ŸŽ€
  • button โ€” IDREF โ€” Optional โ€” a graphic that may be displayed as a trigger for the hyperlink in lieu of or in addition to highlighting the hyperlink text itself. The ID referenced by the button attribute must be the identifier of a graphic (covered later in this document) in the system notation block (snb) of the current virtual page (virpage). The graphic referenced must have a class attribute of button. โœจ
  • linkinfo โ€” CDATA โ€” Optional โ€” information about the target of the link. This information may be displayed as part of a dialog with the reader before traversing the link if such traversal is in some way expensive in time. ๐Ÿซถ
  • descript โ€” CDATA โ€” Optional โ€” a general description of the action that takes place when the hyperlink is activated. ๐Ÿ’–
  • window โ€” current โ€” Optional โ€” by default, hyperlinking to another location in this document or (via indirection) externally, is done by changing the view in the current window or display area. Specifying new for the window attribute causes a new window or display area to be created for displaying hyperlink target. Specifying popup for this attribute causes the new window or display area to be lighter weight, if possible. Often, popup windows are modal and temporary. ๐Ÿฆ‹
  • traversal โ€” return โ€” Optional โ€” by default, the current document and location in the document are stored on a push down stack to allow backtracking of hyperlinks. If this attribute is specified as noreturn, the current location is forgotten on execution of the link. ๐Ÿ˜ญ

tgroup dispwid="6.16in"


๐Ÿฆ‹ SNREF ๐Ÿฆ‹

๐ŸŽ€ Purpose ๐ŸŽ€

Reference to an element or alternates in the system notation block (snb). ๐Ÿ’…

โœจ SYNOPSIS โœจ

&<!ELEMENT snref     - - (refitem+, alttext?) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST snref      id     ID     #IMPLIED >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐ŸŒธ DESCRIPTION ๐ŸŒธ

A system notation reference (snref) is a reference to an external object. The result of resolving that object is that it is interpolated into the document at the point of the snref. The snref element references graphic and script elements, both of which are covered later in this document. ๐Ÿ‘‘

An snref element consists of one or more refitem elements followed by optional alternate text. Each refitem is tried in turn in the order specified until one can be successfully formatted and displayed. If none of the system notations can be successfully formatted and displayed, the alternate text, alttext, which is very simple character data, is displayed instead. ๐Ÿงš

The attribute of snref is:

  • id โ€” ID โ€” Optional โ€” the identifier of the snref. The id attribute must be a valid SGML identifier and must be unique within the document. โญ

tgroup dispwid="6.07in"


๐ŸŒˆ REFITEM ๐ŸŒˆ

๐Ÿ’– Purpose ๐Ÿ’–

A reference to an element in a system notation block. ๐ŸŽ€

๐Ÿ’œ SYNOPSIS ๐Ÿ’œ

&<!ELEMENT refitem     - - (head*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST refitem        rid       IDREF               #REQUIRED
                          class     (figure     |
                                    in-line     |
                                    button      |
                                    icon        |
                                    udefgraph   |
                                    table       |
                                    cell        |
                                    list        |
                                    item        |
                                    text        |
                                    udeffrmt    )       #REQUIRED
                          button    IDREF               #IMPLIED
                          ssi       CDATA               #IMPLIED >

tgroup dispwid="6.23in"

A refitem is literally just one single reference to an element sitting in the system notation block (the snb, iykyk) of the current virtual page (the virpage). One item, one pointer, no drama.

Here's the cute part: an snref is made of one or more refitem elements, which is how it offers alternate choices for the thing being displayed. The refitems get tried in turn, in the order they're listed, until one of them actually formats and displays successfully โ€” like auditioning backups until somebody slays ๐Ÿ˜ญ. A refitem can also point at a text element in the snb, so you can drop in a plain-text alternative for the referenced item. Versatile icon behavior.

A refitem can have zero or more head elements too, which might serve (for example) as the caption of a graphic. No head? Also fine. Zero is a number bestie ๐Ÿซถ.

The attributes of refitem are:

  • rid โ€” IDREF, Required. The identifier of the item being referenced in the system notation block of the current virtual page. This is the whole point of the element, no cap.
  • class โ€” Required. The class of a refitem describes the general purpose the refitem is filling. The class attribute is used in conjunction with the level of the enclosing block, form or virpage, plus the ssi attribute, to perform a lookup in the table of semantics and styles (toss) element. The result of that lookup is formatting and semantic information pertaining to the refitem. Basically a vibe check that returns styling. The allowed values are:
    • figure
    • in-line
    • button
    • icon
    • udefgraph
    • table
    • cell
    • list
    • item
    • text
    • udeffrmt
  • button โ€” IDREF, Optional. An optional reference to a graphic of class button in the snb of the current virpage. This button may be used to request refitem display on systems where display of the item is slow or expensive in some other way. That is โ€” the button gets displayed, and the refitem is only displayed when the button is activated. Lazy-loading, but make it 1990s โœจ.
  • ssi โ€” CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup conforms to a domain specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. It's giving "receipts for your markup" ๐Ÿงพ๐Ÿ’….
tgroup dispwid="6.28in"

๐ŸŒธ ALTTEXT ๐ŸŒธ

Purpose

Simple text alternative for snref. That's it, that's the purpose ๐ŸŽ€.

SYNOPSIS

&<!ELEMENT alttext      - - CDATA >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

DESCRIPTION

The alttext element is a place to put simple text for use if all alternatives โ€” including text replacements โ€” from the list of refitem elements in an snref fail to format. It's the last-resort bestie, the "if nobody else can go, I will" of the group chat ๐Ÿ˜ญ๐Ÿ’–.

The alttext element has no attributes. Zero. None. Clean.


๐Ÿ‘‘ ATOMIC TEXT ELEMENTS ๐Ÿ‘‘

๐Ÿฆ‹ REV ๐Ÿฆ‹

Purpose

Add change bars to displayed text.

SYNOPSIS

&<!ELEMENT rev            - - ((key | sphrase | if |  spc | snref |
                          anchor | link | #PCDATA)*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.37in"

DESCRIPTION

Surrounding data with a rev element signals to the formatter that the surrounded data should be marked somehow as having undergone change. Typically, this mark is change bars on the side of the data โ€” very "track changes but make it typography" ๐Ÿ’…. An empty rev element implies some text has been deleted. Yes, empty means deleted. Iconic behavior honestly.

The rev element has no attributes.


๐Ÿ”ฅ KEY ๐Ÿ”ฅ

Purpose

Effect a change in font. Literally that's the whole job ๐ŸŒˆ.

SYNOPSIS

&<!ELEMENT key  - - ((key | sphrase | rev | if | spc | anchor | snref | #PCDATA)+) >

&<!ATTLIST key            charset   CDATA                 #IMPLIED
                          class     (acro        |
                                    book         |
                                    emph         |
                                    jargon       |
                                    l10n         |
                                    name         |
                                    quote        |
                                    product      |
                                    termdef      |
                                    term         |
                                    mach-in      |
                                    mach-out     |
                                    mach-cont    |
                                    pub-lit      |
                                    udefkey      )        #REQUIRED
                          ssi       CDATA                 #IMPLIED >
tgroup dispwid="5.92in"

So real quick on those ATTLIST bits, because they matter ๐Ÿซถ:

  • charset โ€” CDATA, #IMPLIED (so it's optional, bestie).
  • class โ€” #REQUIRED, and it has to be one of exactly these: acro, book, emph, jargon, l10n, name, quote, product, termdef, term, mach-in, mach-out, mach-cont, pub-lit, udefkey. No inventing your own, that's the rule ๐Ÿ’€.
  • ssi โ€” CDATA, #IMPLIED.

๐Ÿ’… DESCRIPTION (key, cont'd) ๐Ÿ’…

Okay so key phrases are data that are key to understanding the paragraph they live in โ€” like, they have special significance, that's the whole point. The key element is literally there to make readers go "๐Ÿ‘€ oh, that phrase matters". And plot twist: key only exists inside the context of a paragraph ( p ) โ€” it's document sub-structure, bestie. Not a main character on its own.

The semantics of key are doing double duty โ€” they matter for both rendering and navigation:

  • Rendering: the phrase gets highlighted, typically with a different font style or attribute. It's giving โœจvisual emphasisโœจ.
  • Navigation: key data can be used as fields in semantic searches, or as variables in a relevance-ranking algorithm. Very demure, very searchable.

There are, like, an infinite variety of key phrases possible in source documents, so to make sure the delivery system can fully use the semantics of key data, this delivery format forces the semantic to be normalized. Every single phrase is required to have a class attribute, plus an optional source semantic identifier (ssi). No skipping the class, fr fr.

The intended uses for the possible key classes are:

  • acro โ€” an acronym.
  • book โ€” the proper title of a document.
  • emph โ€” an emphasized phrase.
  • jargon โ€” a phrase with application unique significance; its definition is commonly understood by convention by the practitioner of the application field.
  • l10n โ€” a phrase that must be specially treated during localization.
  • name โ€” a proper name.
  • quote โ€” a direct quote.
  • product โ€” a proper product name.
  • pub-lit โ€” a literal phrase added by the publisher.
  • termdef โ€” a phrase defined within the current paragraph.
  • term โ€” a phrase defined elsewhere.
  • mach-in โ€” a machine input phrase.
  • mach-out โ€” a machine output phrase.
  • mach-cont โ€” a machine control or keyboard key name.
  • udefkey โ€” a user-defined key; this may be used by the author of a higher level DTD to SDL translator for unforeseen key phrases. (Basically the "miscellaneous" bin, iykyk.)

The attributes of key are:

  • charset โ€” CDATA, Optional. The character set of this key. The language of the enclosing paragraph (p) and charset attributes plus information retrieved from the table of semantics and styles (toss) element are used to select the font for the key.
  • class โ€” one of acro, book, emph, jargon, l10n, name, quote, product, pub-lit, termdef, term, mach-in, mach-out, mach-cont, udefkey, Required. See above ๐Ÿ‘†.
  • ssi โ€” CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup conforms to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers.
tgroup dispwid="6.03in"

๐Ÿซถ SPHRASE ๐Ÿซถ

Purpose

A super or sub-scripted phrase. Tiny text, big energy. ๐Ÿงš

SYNOPSIS

&<!ELEMENT sphrase      - - CDATA >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST sphrase     class    (super     |
                                sub        )       #REQUIRED
                       ssi      CDATA              #IMPLIED >

DESCRIPTION

The stylized phrase (sphrase) contains stylized text. These phrases are only presentationally significant โ€” it's all about the look, no cap. Two types are supported: sub and super.

The attributes of sphrase are:

  • style โ€” super or sub, Required. Indicates whether the sphrase should be set in superscript or subscript.
  • ssi โ€” CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. The source semantic identifier assists in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup conforms to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers.
tgroup dispwid="6.23in"

๐ŸŽ€ SPC ๐ŸŽ€

Purpose

A special character. Like, a literal glyph that's not in your font. Iconic. ๐ŸŒธ

SYNOPSIS

&<!ELEMENT spc     - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST spc     name     CDATA        #REQUIRED >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

DESCRIPTION

The spc element lets special characters โ€” meaning the ones not in the current font โ€” be included in text. Usually DTDs pull this off with character entities, but SDL avoids runtime evaluation of entities, and here's why bestie: entities are global to a document, and for performance reasons, SDL applications often don't wanna process all global information just to display a single topic. Efficiency queen. ๐Ÿ’…

The attribute of spc is:

  • name โ€” CDATA, Required. The name attribute must be one of the special character names โ€” for example, `[bull ]` (bullet) โ€” defined in the public character entities such as ISOpub, `ISO 8879:1986//ENTITIES Publishing//EN.` These entities are defined in sections D.4.2.1 through D.4.5.6 of The SGML Handbook (Goldfarb).
tgroup dispwid="6.14in"

โœจ CONDITIONAL TEXT ELEMENTS โœจ

๐ŸŒˆ IF ๐ŸŒˆ

Purpose

Conditional inclusion of text or data. It's giving "choose your own adventure" but for markup. ๐Ÿฆ‹

SYNOPSIS

&<!ELEMENT if     - - (cond, then, else?) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

DESCRIPTION

The if element allows conditional inclusion of other text and data elements.

The if element consists of a condition (cond) followed by a then clause and an optional else clause. Based on the result of the condition, either the then clause or the else clause is included in the document. If the condition is false and no else clause exists, the if element is considered to be empty. (RIP, nothing gets out. ๐Ÿ’€)

The if element has no attributes. Clean, minimal, main character energy.


โญ COND โญ

Purpose

Boolean condition for the if element. The vibe check, essentially. ๐Ÿซถ

SYNOPSIS

&<!ELEMENT cond      - - CDATA >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST cond           interp    NOTATION
                                    (tcl          |
                                    sh            |
                                    ksh           |
                                    csh           )       #IMPLIED >
tgroup dispwid="5.84in"

โœจ DESCRIPTION โœจ

Okay so the cond element is literally carrying a whole lil script around ๐Ÿซถ โ€” like, it holds a script that gets run by whatever interpreter you point at it with the interp attribute. The CDATA content of cond gets yeeted straight into interp. And the return value from that interpreter? It should be numeric, bestie. That's the whole vibe check. ๐Ÿ‘‘

The attribute of cond is:

  • interp โ€” NOTATION, Optional. The interpreter to which to pass the CDATA content of the cond element. It is expected that the interpreter returns a numeric string value. One of the listed interpreters โ€” tcl, sh, ksh, csh โ€” is often embedded in the application and does not require another process to execute. If the specified interpreter does not exist, or returns a non-numeric value, the default return value is zero. ๐Ÿซ 
tgroup dispwid="6.11in"

๐ŸŒธ THEN ๐ŸŒธ

๐Ÿ’ซ Purpose

Included text when the condition (cond) of the if element is a non-zero string. Like, the "yes babe, we're going in" branch of the whole operation. ๐Ÿ’–

โœจ SYNOPSIS โœจ

&<!ELEMENT then           - - (key | sphrase | rev | if |
                                  spc | snref | anchor | link | #PCDATA)*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.39in"

๐Ÿ’… DESCRIPTION ๐Ÿ’…

So the then element contains the text and data that get included if the return value of the interpreter over in the cond element is a non-zero string. She's the payoff, the main character moment. ๐Ÿ‘‘

And the fun bit โ€” then can absolutely contain a nested if element, plus any other text or data that's acceptable in a paragraph (p). Nested conditions, we love to see it. ๐ŸŒ€

The then element has no attributes. Zero. None. Clean girl aesthetic. ๐ŸŽ€


๐Ÿฆ‹ ELSE ๐Ÿฆ‹

๐Ÿ’ซ Purpose

Included text when the condition (cond) of the if element is a string evaluating to zero. The "okay never mind then" branch ๐Ÿ˜ญ๐Ÿ’€

โœจ SYNOPSIS โœจ

&<!ELEMENT else - - (key | sphrase | rev | if | spc | snref | anchor | link | #PCDATA)*) >

๐Ÿ’… DESCRIPTION ๐Ÿ’…

The else element contains the text and data that get included if the return value of the interpreter in the cond element is a string evaluating to zero. It's giving fallback energy, and honestly it's thriving. โœจ

Just like her sister then, else may contain a nested if element as well as any other text or data acceptable in a paragraph (p). Recursion goes both ways, periodt. ๐Ÿ’…

The else element has no attributes either. Matching set ๐ŸŽ€


๐ŸŒˆ NOTATION ELEMENTS ๐ŸŒˆ


๐Ÿ–ผ๏ธ GRAPHIC ๐Ÿ–ผ๏ธ

๐Ÿ’ซ Purpose

Attachment to a graphic image external to the current document. Very "link in bio" of it. ๐Ÿ”—

โœจ SYNOPSIS โœจ

&<!ELEMENT graphic      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST graphic      id         ID           #REQUIRED
                        format     CDATA        #IMPLIED
                        method     IDREF        #IMPLIED
                        xid        CDATA        #REQUIRED >

๐Ÿ’… DESCRIPTION ๐Ÿ’…

The graphic element is literally how you let graphic images get incorporated into an SDL-conforming document. And here's the tea: only one graphic type element is declared. Which one it is? That's what the class attribute is for โ€” it distinguishes between figure, in-line or button. ๐Ÿ”ฅ

A graphic image gets incorporated by putting an snref element in the document right at the point of inclusion. The rid attribute of the snref should refer to the graphic element describing the storage location and format of the image. So snref is the doorway, graphic is the room, iykyk. ๐Ÿšชโœจ

The attributes of graphic are:

  • id โ€” ID, Required. The identifier of the graphic. The id attribute must be a valid SGML identifier and must be unique within the document. No duplicates, you're not like other girls. ๐Ÿ‘‘
  • format โ€” CDATA, Required. The format in which the graphic is stored. Example values for the format attribute are: tiff, xpm, xbm and xwd. ๐Ÿ–ผ๏ธ
  • method โ€” IDREF, Optional. A reference to a script element (discussed later) in the system notation block of the current virtual page. The script in the script element provides a mechanism for performing any setup necessary to display the graphic image. Setup on setup on setup ๐Ÿ’…
  • xid โ€” CDATA, Required. An external identifier for the graphic image.
tgroup dispwid="6.04in"

๐Ÿ“ TEXT ๐Ÿ“

๐Ÿ’ซ Purpose

Alternate rich text for snref.

โœจ SYNOPSIS โœจ

&<!ELEMENT text     - - ((p | cp)*) >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST text     id         ID          #REQUIRED
                    language   CDATA       #REQUIRED
                    charset    CDATA       #IMPLIED >

๐Ÿ’… DESCRIPTION ๐Ÿ’…

The text element is the rich-text glow-up ๐Ÿ’– โ€” it allows for rich text alternatives to other elements in the system notation block being referenced by refitem elements in snref. A text element contains zero or more paragraphs (p) or character paragraphs (cp). Zero! Or more! Flexible queen. ๐ŸŽ€

The attributes of text are:

  • id โ€” ID, Required. The identifier of the text. The id attribute must be a valid SGML identifier and must be unique within the document. Same rules as always, no cap. ๐Ÿ‘‘
  • language โ€” CDATA, Optional. The language in which this text was written. ๐ŸŒ
  • charset โ€” CDATA, Optional. The character set of this text. The language and charset attributes plus information retrieved from the table of semantics and styles (toss) element are used to select the text font. Font selection by committee, but make it โœจfashionโœจ
tgroup dispwid="6.13in"

๐Ÿ”Š AUDIO ๐Ÿ”Š

๐Ÿ’ซ Purpose

Attachment to an audio snippet external to the current document. Sound on, bestie ๐ŸŽง

โœจ SYNOPSIS โœจ

&<!ELEMENT audio      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST audio      id         ID           #REQUIRED
                      format     CDATA        #IMPLIED
                      method     IDREF        #IMPLIED
                      xid        CDATA        #REQUIRED >

๐Ÿ’… DESCRIPTION ๐Ÿ’…

The audio element lets an audio snippet get incorporated into an SDL-conforming document. An audio snippet is incorporated by putting an snref element in the document at the point of inclusion. The rid attribute of the snref should refer to the audio element describing the storage location and format of the audio snippet. Same system as graphic, different senses. ๐Ÿซถ

The attributes of audio are:

  • id โ€” ID, Required. The identifier of the audio. The id attribute must be a valid SGML identifier and must be unique within the document. ๐Ÿ‘‘
  • format โ€” CDATA, Required. The format in which the audio snippet is stored. ๐ŸŽต
  • method โ€” IDREF, Optional. A reference to a script element (covered later in this document) in the system notation block of the current virtual page. The script in the script element provides a mechanism for performing any setup necessary to present the audio snippet. ๐Ÿ’…
  • xid โ€” CDATA, Required. An external identifier for the audio snippet.
tgroup dispwid="6.14in"

๐ŸŽฌ VIDEO ๐ŸŽฌ

๐Ÿ’ซ Purpose

Attachment to a video clip external to the current document. Cinema. ๐Ÿฟ

โœจ SYNOPSIS โœจ

&<!ELEMENT video     - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST video      id         ID         #REQUIRED
                      format     CDATA      #IMPLIED
                      method     IDREF      #IMPLIED
                      xid        CDATA      #REQUIRED >

okay so this is where it gets spicy โ€” the video element is how you yeet a whole video clip into an SDL-conforming document. How? You drop an snref element in at the exact spot where you want it to appear. that's the whole trick. The rid attribute on your snref points at the video element that describes where the clip lives and what format it's in.

The attributes of video are:

  • id โ€” type ID, Required โ€” the identifier of the video. Ngl, the id attribute must be a valid SGML identifier and must be unique within the document. No duplicates, bestie, iykyk ๐Ÿ’…
  • format โ€” type CDATA, Required โ€” the format in which the video clip is stored.
  • method โ€” type IDREF, Optional โ€” a reference to a script element (yes, that one โ€” it's covered later in this document) in the system notation block of the current virtual page. The script in the script element is the whole mechanism for doing any setup that's necessary to present the video clip. ๐ŸŽฌ
  • xid โ€” type CDATA, Required โ€” an external identifier for the video clip.

tgroup dispwid="6.21in"


๐Ÿฆ‹ ANIMATE ๐Ÿฆ‹

๐ŸŽ€ Purpose

Attachment to an animation sequence external to the current document. main character energy โœจ

๐Ÿ’– SYNOPSIS ๐Ÿ’–

&<!ELEMENT animate     - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST animate     id         ID           #REQUIRED
                       format     CDATA        #IMPLIED
                       method     IDREF        #IMPLIED
                       xid        CDATA        #REQUIRED >

๐ŸŒธ DESCRIPTION ๐ŸŒธ

So the animate element lets you pull an animation sequence into an SDL-conforming document. Same deal as before, bestie: you put an snref element in the document at the point of inclusion, and the rid attribute of that snref should refer to the animate element describing the storage location and format of the animation sequence. it's giving consistency ๐Ÿฆ‹

The attributes of animate are:

  • id โ€” type ID, Required โ€” the identifier of the animate. The id attribute must be a valid SGML identifier and must be unique within the document.
  • format โ€” type CDATA, Required โ€” the format in which the animation sequence is stored.
  • method โ€” type IDREF, Optional โ€” a reference to a script element (covered later in this document, promise ๐Ÿซถ) in the system notation block of the current virtual page. The script in the script element provides a mechanism for performing any setup necessary to present the animation sequence.
  • xid โ€” type CDATA, Required โ€” an external identifier for the animation sequence.

tgroup dispwid="6.14in"


๐Ÿ‘‘ SCRIPT ๐Ÿ‘‘

๐ŸŽ€ Purpose

Data collection and/or generation of dynamic text. literally the multitasker of the group โœจ

๐Ÿ’– SYNOPSIS ๐Ÿ’–

&<!ELEMENT script      - - CDATA >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST script         id       ID                     #REQUIRED
                          interp   NOTATION
                                   (tcl           |
                                   sh             |
                                   ksh            |
                                   csh            )       #IMPLIED >

tgroup dispwid="5.98in"

๐ŸŒธ DESCRIPTION ๐ŸŒธ

The script element is the mechanism inside SDL for collecting usage data or generating dynamic (on-the-fly) text. Here's the vibe: when it gets referenced via an snref, the CDATA content of the script element is passed to the designated interpreter. If the return value from the interpreter is non-NULL, that value gets interpolated into the document right at the point of the snref. iconic behaviour, honestly ๐ŸŒˆ

And if the designated interpreter is embedded in the application, global variables may be used to collect usage data โ€” otherwise, some mechanism like temporary files may be used. ngl, slightly chaotic but it works ๐Ÿ’€

The attributes of script are:

  • id โ€” type ID, Required โ€” the identifier of the script. The id attribute must be a valid SGML identifier and must be unique within the document.
  • interp โ€” type NOTATION โ€” one of tcl, sh, ksh, csh, Optional โ€” the interpreter to which to pass the CDATA content of the script element. One of the listed interpreters is often embedded in the application and does not require another process to execute. If the specified interpreter doesn't exist, the default return value is NULL. ๐Ÿ‘€

tgroup dispwid="6.69in"


๐Ÿงš CROSSDOC ๐Ÿงš

๐ŸŽ€ Purpose

Indirect element for following a hyperlink outside the current document. the little portal to somewhere else ๐ŸŒ€

๐Ÿ’– SYNOPSIS ๐Ÿ’–

&<!ELEMENT crossdoc      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST crossdoc       id       ID         #REQUIRED
                          xid      CDATA      #REQUIRED >

๐ŸŒธ DESCRIPTION ๐ŸŒธ

The crossdoc element is how SDL does a hyperlink to an external document. To create an external, cross-document hyperlink you place a link to the crossdoc in the text, and the crossdoc element carries all the info needed to find the desired document and the id within that document. efficient queen โœจ

The attributes of crossdoc are:

  • id โ€” type ID, Required โ€” the identifier of the crossdoc. The id attribute must be a valid SGML identifier and must be unique within the document.
  • xid โ€” type CDATA, Required โ€” an external identifier for the external document and id.

tgroup dispwid="6.05in"


๐Ÿ“– MAN PAGE ๐Ÿ“–

๐ŸŽ€ Purpose

Indirect element for following a hyperlink to a reference manual page. yes bestie, we're linking man pages now ๐Ÿ˜ญ๐Ÿ’–

๐Ÿ’– SYNOPSIS ๐Ÿ’–

&<!ELEMENT man-page      - O EMPTY >
&<!ELEMENT crossdoc      - O EMPTY >
&<!ATTLIST man-page       id       ID          #REQUIRED
                          xid      CDATA       #REQUIRED >
note: yes, the crossdoc ELEMENT line is literally in there too โ€” that's what the original gives us, so it stays. No cap. ๐Ÿ™ˆ

๐ŸŒธ DESCRIPTION ๐ŸŒธ

The man-page element is the SDL mechanism for effecting a hyperlink to (display of) a reference manual page such as a Unix man page. To create a man page hyperlink, a link to the man-page is placed in the text, and the man-page element holds the necessary info to find and display the desired manual page. we stay documented ๐Ÿ“š

The attributes of man-page are:

  • id โ€” type ID, Required โ€” the man-page identifier. The id attribute must be a valid SGML identifier and must be unique within the document.
  • xid โ€” type CDATA, Required โ€” an external identifier for the reference manual page.

tgroup dispwid="6.20in"


๐Ÿ“ TEXTFILE ๐Ÿ“

๐ŸŽ€ Purpose

Indirect element for following a hyperlink to a text file. humble, useful, lowkey underrated ๐Ÿซถ

๐Ÿ’– SYNOPSIS ๐Ÿ’–

&<!ELEMENT textfile      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST textfile      id      ID          #REQUIRED
                         xid     CDATA       #REQUIRED >

๐ŸŒธ DESCRIPTION ๐ŸŒธ

The textfile element is the SDL mechanism for effecting a hyperlink to (display of) a text file. To create a text file hyperlink you put a link to the textfile in the text, and the textfile element contains the necessary information to find the desired file. simple, clean, slays โœจ

The attributes of textfile are:

  • id โ€” type ID, Required โ€” the identifier of the textfile. The id attribute must be a valid SGML identifier and must be unique within the document.
  • xid โ€” type CDATA, Required โ€” an external identifier for the text file.

tgroup dispwid="6.14in"


๐Ÿ’… SYS-CMD ๐Ÿ’…

๐ŸŽ€ Purpose

Indirect element for following a hyperlink to a system command. okay this one is very much my brand ๐Ÿ”ฅ

๐Ÿ’– SYNOPSIS ๐Ÿ’–

&<!ELEMENT sys-cmd     - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST sys-cmd      id      ID          #REQUIRED
                        xid     CDATA       #REQUIRED >

and bestie that's exactly where we're picking up next โ€” the sys-cmd description is literally right there waiting for us ๐ŸŽ€

The attributes of sys-cmd are literally just two, and they're both required, so no skipping ๐Ÿ’…

  • id โ€” ID, Required โ€” the identifier of the sys-cmd. Bestie, the id attribute must be a valid SGML identifier and must be unique within the document. No duplicates, periodt.
  • xid โ€” CDATA, Required โ€” an external identifier for the system command. That's it, that's the whole vibe.

tgroup dispwid="6.03in" โ€” yeah that's the table width, the original said so, so I'm saying so ๐ŸŽ€


๐Ÿ’ซ CALLBACK ๐Ÿ’ซ

Purpose ๐Ÿฆ‹

An indirect element for following a hyperlink into the application. Lowkey the whole point is "hey app, do the thing" โœจ

SYNOPSIS ๐Ÿ“œ

&<!ELEMENT callback      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST callback      id       ID          #REQUIRED
                         xid      CDATA       #REQUIRED >

DESCRIPTION ๐ŸŒธ

So the callback element is the mechanism within SDL for effecting a hyperlink into the enclosing application. To create an application callback hyperlink, a link to the callback is placed in the text โ€” same energy as the other link elements, just aimed inward. The callback element contains the necessary information to inform the application of the desired action. It's literally the "yo, app, do this" element ๐Ÿ‘‘

The attributes of callback are:

  • id โ€” ID, Required โ€” the identifier of the callback. The id attribute must be a valid SGML identifier and must be unique within the document. Say it with me: valid SGML, unique in doc ๐Ÿ’–
  • xid โ€” CDATA, Required โ€” an external identifier and user data for the application callback. Note that it carries user data too, not just the id โ€” that detail matters, don't drop it ๐Ÿ™ˆ

tgroup dispwid="6.05in"


๐Ÿ”€ SWITCH ๐Ÿ”€

Purpose ๐Ÿ’€

Conditional hyperlink. It's giving "choose your own adventure" but make it markup.

SYNOPSIS ๐Ÿ“œ

&<!ELEMENT switch      - - CDATA >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST switch         id          ID                 #REQUIRED
                          interp      NOTATION
                                      (tcl         |
                                      sh           |
                                      ksh          |
                                      csh          )     #IMPLIED
                          branches    IDREFS             #REQUIRED >

DESCRIPTION ๐Ÿงš

The switch element is part of the system notation block, snb, and is always instantiated via a reference by a link element โ€” like, always, no solo runs, it's not a main character that way. When activated by the hyperlink, the interpreter (interp) is called, passing it the CDATA content of the switch, and the interpreter returns a non-negative number. The return value of the interpreter is used to index into the list of branches, and the hyperlink is continued to that ID. iykyk โœจ

Okay here's the fallback tea, and it's important ๐Ÿซ–: a return value that is non-numeric, less than zero, or greater than the number minus one of the ids in the branches attribute, will cause the hyperlink to continue to the first branch in the list. So it never just... dies? It goes to branch #1. Love that for us.

The attributes of switch are:

  • id โ€” ID, Required โ€” the identifier of the switch. The id attribute must be a valid SGML identifier and must be unique within the document. Same rule as always, no cap ๐Ÿ’…
  • interp โ€” NOTATION, Optional โ€” the interpreter to which to pass the CDATA content of the switch element. The options are tcl, sh, ksh, or csh. It is expected that the interpreter returns a numeric string value equal to or greater than zero. One of the listed interpreters is often embedded in the application and does not require another process to execute โ€” convenient, iconic, chef's kiss ๐Ÿ‘‘ If the specified interpreter does not exist, or returns either a non-numeric or out-of-bounds value, the default return value is zero.
  • branches โ€” IDREFS, Required โ€” a list of IDs in the current document. The return value of the interp attribute is used to index into this list of IDs, and the hyperlink is continued at the resulting ID. Index in, jump out, slay ๐Ÿฆ‹

tgroup dispwid="6.31in"


๐ŸŒˆ GENERATED ELEMENTS ๐ŸŒˆ

๐ŸŽ€ REL-DOCS ๐ŸŽ€

Purpose

Documents related to this document. Cute, right?

SYNOPSIS

To be determined.

DESCRIPTION

To be determined.


๐ŸŽ€ REL-FILE ๐ŸŽ€

Purpose

Files related to this document.

SYNOPSIS

To be determined.

DESCRIPTION

To be determined.


๐ŸŽ€ NOTES ๐ŸŽ€

Purpose

Notes related to this document.

SYNOPSIS

To be determined.

DESCRIPTION

To be determined.

ngl bestie, those three are literally just placeholders in the source โ€” "To be determined" is all it says, so that's all I'm giving you. No inventing, that's the rule ๐Ÿ™…โ€โ™€๏ธ

โญ LOIDS AND ID โญ

Purpose

List of identifiers in the document. It's the roll call, the attendance sheet, the group chat member list ๐Ÿ’œ

SYNOPSIS ๐Ÿ“œ

&<!ELEMENT loids
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST loids      count    NUMBER       #IMPLIED >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ELEMENT id     - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST id      type      (virpage      |
                             block         |
                             form          |
                             p             |
                             cp            |
                             head          |
                             subhead       |
                             anchor        |
                             switch        |
                             snref         |
                             graphic       |
                             text          |
                             audio         |
                             video         |
                             animate       |
                             crossdoc      |
                             man-page      |
                             textfile      |
                             sys-cmd       |
                             script        |
                             callback      )        #REQUIRED
                   rid       IDREF                  #REQUIRED
                   rssi      CDATA                  #IMPLIED
                   rlevel    NUMBER                 #IMPLIED
                   offset    NUMBER                 #REQUIRED >

Look at that type list โ€” twenty-two options, every single one accounted for, virpage through callback, in exactly that order ๐Ÿ”ฅ And yeah: type is #REQUIRED, rid is #REQUIRED, offset is #REQUIRED, while rssi and rlevel are #IMPLIED. The loids element itself just has count (NUMBER, #IMPLIED). Not me memorizing the whole enum, but also... yeah I did ๐Ÿ’…

๐Ÿ’… DESCRIPTION (the loids saga continues)

Okay so the loids element is literally just a container for a list of identifiers in the document. Like, that's its whole job. And the list appears in the order the identifiers appear โ€” no reshuffling, no sorting, just vibes in the exact order they showed up. ๐ŸŽ€

And bestie, here's where it gets iconic: you can use the loids element to generate a table of contents for the document โ€” by selecting only those elements whose type is virpage and listing the heads of those virpage elements. Slay. The rlevel attribute is there to infer the nesting level of the virpage, so you can avoid reading the head of virtual pages whose nesting level is deeper than what's currently being displayed. Highkey a whole glow-up for keeping the screen uncluttered. โœจ

The attribute of loids is:

  • count โ€” NUMBER, Optional โ€” The number of id elements contained in the loids. If this attribute is present, the processor can use it to pre-allocate space for the id elements. ๐Ÿซถ

The attributes of id are:

  • type โ€” Required โ€” The name of the element to which this id belongs. And the options are, in order: virpage, block, form, p, cp, head, subhead, anchor, switch, snref, graphic, text, audio, video, animate, crossdoc, man-page, textfile, sys-cmd, script, callback.
  • rid โ€” IDREF, Required โ€” The referenced identifier.
  • rssi โ€” CDATA, Optional โ€” The source semantic identifier (ssi) of the element referenced by the rid attribute.
  • rlevel โ€” NUMBER, Optional โ€” The level of the element referenced by the rid attribute. Defaults to 1, if you were wondering ๐Ÿ’ญ
  • offset โ€” NUMBER, Required โ€” The byte offset in the document to the start of the virtual page containing the element referenced by the rid attribute.

๐Ÿฆ‹ INDEX AND ENTRY

Purpose

Contains the index for the document. That's it, that's the whole purpose. Periodt. ๐Ÿ‘‘

SYNOPSIS

&<!ELEMENT index      - - (entry*) >
&<!ATTLIST index      head      CDATA        #IMPLIED
                      count     NUMBER       #IMPLIED >
&<!ELEMENT entry               - - ((key | sphrase | rev |  if | spc |
                               snref | #PCDATA)*, entry*) >
&<!ATTLIST entry      id       ID           #IMPLIED
                      main     IDREFS       #IMPLIED
                      locs     IDREFS       #IMPLIED
                      syns     IDREFS       #IMPLIED
                      sort     CDATA        #IMPLIED >

DESCRIPTION

The index element contains all the information necessary to create and display an index for the document. Ngl, it gets created during translation of a higher level DTD-conforming document to conform to SDL โ€” which means, and this is the key part, an index is not generated at the time of request. It's pre-made, bestie. ๐Ÿ’…

The index can also be used to enable keyword searches within a document. Handy fr fr.

An index consists of zero or more entries.

The attributes of index are:

  • head โ€” CDATA, Optional โ€” Alternate text for the heading of the index.
  • count โ€” NUMBER, Optional โ€” The number of entry elements contained in the index. The processor can use this attribute (if it's present) to pre-allocate space for the entry elements. ๐Ÿซถ

The attributes of entry are:

  • id โ€” ID, Optional โ€” The identifier of the index entry.
  • main โ€” IDREFS, Optional โ€” A list of identifiers specifying where the indexed entry may be found. The main list of ids may be highlighted in some way to indicate a greater importance than the ids found in the locs list. Main character energy, literally. โœจ
  • locs โ€” IDREFS, Optional โ€” A list of identifiers specifying where the indexed entry may be found. At least one of either main or locs must be specified โ€” so you don't get to skip both, that's not a vibe. ๐Ÿ™ˆ
  • syns โ€” IDREFS, Optional โ€” A list of identifiers that refer to other entry elements and correspond to a "See also" or synonym-type of reference.
  • sort โ€” CDATA, Optional โ€” A sort key to use if the indexed entry is to be sorted other than by its content.

๐ŸŒธ LOPHRASES

Purpose

A list of semantic phrases used in this document. Cute, concise, done. ๐ŸŽ€

SYNOPSIS

&<!ELEMENT lophrases      - - (phrase+) >
&<!ATTLIST lophrases       count    NUMBER       #IMPLIED >

DESCRIPTION

The list of phrases (lophrases) element is generated by the higher level DTD to SDL translator. It's a list of phrases used from the toss element (covered later in this document) that are contained in this document. The whole point of these phrases is to map the user's knowledge domain into the constructs used in SDL. That info can then be passed โ€” the phrases available for structured or semantic searches โ€” to a browser or viewer, so that browser or viewer can offer that info to the user. ๐Ÿฆ‹

Now, the lophrases element is different from the phrases in the toss, and the difference is lowkey everything: the toss contains all the phrases possible in a higher level DTD to SDL translation, while the lophrases element contains only those used in the translation of this particular document. So toss is the whole menu, lophrases is just what you actually ordered. ๐Ÿ”ฅ

The attribute of lophrases is:

  • count โ€” NUMBER, Optional โ€” The number of phrase elements contained in the lophrases. The processor can use this attribute (if it's present) to pre-allocate space for the phrase elements.

๐ŸŽ€ PHRASE

Purpose

A single phrase in the lophrases element. One phrase. Solo. Main character. ๐Ÿ‘‘

SYNOPSIS

&<!ELEMENT phrase      - O EMPTY >
&<!ATTLIST phrase      text     CDATA       #REQUIRED >

DESCRIPTION

The phrase element is a single phrase from the list of phrases element (lophrases).

The attribute of phrase is:

  • text โ€” CDATA, Required โ€” The semantic phrase. ๐Ÿ’ฌ

๐Ÿ‘‘ TOSS

Purpose

The table of semantics and styles. Big things are happening.

SYNOPSIS

&<!ELEMENT toss           - - (keystyle*, headstyle*, frmtstyle*,
                                 grphstyle*)>

So yeah โ€” picture toss as, like, the big closet where all the semantics and styles live. Every sub-element inside toss is its own little formatting group, right? And those sub-elements also carry class and ssi (source semantic identifier) attributes so you can do general or super-specific semantic / structured searches. โœจ Bonus: a lot of the toss sub-elements have a phrase attribute, which is basically the vibes-translator โ€” it hands you a natural-language phrase describing what that element's semantics actually are as used in the higher-level DTD-to-SDL translation. ๐Ÿซถ

Now, how do lookups work? Vibe check time: you match the class and ssi attributes of the element in the document proper against the class and ssi attributes of the sub-element of the toss. That's the match. ๐Ÿ’… And the lookup can often be refined even further by matching the level attribute (if it's there) on the document element against the rlevel attribute (if it's there) on the toss sub-element.

Structured searches, though? Those are the main character move. You build them off the structure of a domain-specific higher-level DTD by making the ssi attribute of the sub-element line up directly with the generic identifier from the original DTD. iykyk. ๐Ÿฆ‹

The attribute of toss is:

  • count โ€” NUMBER, Optional. The number of styles contained in the toss. The processor can use this attribute (if this attribute is present) to pre-allocate space for the styles.
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
tgroup dispwid="6.13in"

๐Ÿ‘‘ KEYSTYLE

๐ŸŽ€ Purpose

Provides font and semantic information for key phrases. Periodt. ๐Ÿ’–

โœจ SYNOPSIS โœจ

&<!ELEMENT keystyle      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST keystyle       class       (acro         |
                                      book          |
                                      emph          |
                                      jargon        |
                                      l10n          |
                                      name          |
                                      quote         |
                                      product       |
                                      termdef       |
                                      term          |
                                      mach-in       |
                                      mach-out      |
                                      mach-cont     |
                                      pub-lit       |
                                      udefkey       )    #REQUIRED
                          ssi         CDATA              #IMPLIED
                          rlevel      NUMBER             #IMPLIED
                          phrase      CDATA              #IMPLIED
                          srch-wt     NUMBER             #IMPLIED
                          pointsz     NUMBER             #IMPLIED
                          set-width   NUMBER             #IMPLIED
                          color       CDATA              #IMPLIED
                          xlfd        CDATA              #IMPLIED
                          xldfi       CDATA              #IMPLIED
                          xlfdb       CDATA              #IMPLIED
                          xlfdib      CDATA              #IMPLIED
                          typenam     CDATA              #IMPLIED
                          typenami    CDATA              #IMPLIED
                          typenamb    CDATA              #IMPLIED
                          typenamib   CDATA              #IMPLIED
                          style       (serif        |
                                      sans-serif    |
                                      symbol        )    #IMPLIED
                          spacing     (monospace    |
                                      propspace     )    #IMPLIED
                          weight      (medium       |
                                      bold          )    #IMPLIED
                          slant       (roman        |
                                      italic        |
                                      rev-italic    |    #IMPLIED
                          special     (underline    |
                                      strikeout     |
                                      none          )    #IMPLIED >
tgroup dispwid="6.13in"
๐Ÿซถ ngl bestie, look at that class list โ€” #REQUIRED, no skipping it. And yes, you read the slant line right, it's literally written like that in the source: slant (roman | italic | rev-italic | then #IMPLIED. Not me fixing it. Copying it exactly is the whole assignment. ๐Ÿ’€

Also: &<!ELEMENT keystyle - O EMPTY > โ€” that - O means it's got a required start tag and an omitted end tag, and EMPTY means it holds nothing. No children, no content. Just attributes and vibes. ๐Ÿงš

The keystyle element is literally the glow-up pass for key phrases in the document โ€” it hands over the semantic and font info for them. ๐Ÿ’…

So here's the vibe: when a key element shows up in the document, the whole toss list of keystyle elements gets searched (yes, the original says "ssearched" and we love her for it ๐Ÿซถ) and the system tries to match the class and ssi attributes of the key element โ€” if it has any โ€” against the class and ssi attributes of the keystyle. If the keystyle specifies an rlevel attribute, the search gets even more refined by matching the level of the block containing the paragraph ( p) to the rlevel of the keystyle. And if the key element has no ssi attribute, the search in the toss goes looking for a keystyle element with no ssi specified. A keystyle element with no ssi specified matches any ssi in a key element, although an explicit class/ssi pair is chosen in preference. โœจ

The way that when a match is found, the font information contained in the keystyle is used in formatting the key element? Iconic. That's the whole point. ๐ŸŽ€


๐Ÿ’– The attributes of keystyle (all of them, no skips, periodt)

  • class โ€” acro โ€” Required โ€” The general type of the key element in the document. The values are:
    • acro
    • book
    • emph
    • jargon
    • l10n
    • name
    • quote
    • product
    • pub-lit
    • termdef
    • term
    • mach-in
    • mach-out
    • mach-cont
    • udefkey
  • ssi โ€” CDATA โ€” Optional โ€” A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. And when the original markup conforms to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. Obsessed with the preservation of intent, honestly. ๐Ÿฆ‹
  • rlevel โ€” NUMBER โ€” Optional โ€” Used to further refine matches of the class and ssi attributes. If present, the rlevel of the keystyle is matched against the level of the block containing the paragraph ( p) containing the key element. Match-ception, lowkey. ๐Ÿ’ซ
  • phrase โ€” CDATA โ€” Optional โ€” A natural language phrase describing the semantics (meaning) of the element in the original SGML document that was translated into this key. This phrase can be used to present an interface to the reader for searching or otherwise examining the document. It's giving "human-readable, bestie". ๐Ÿซถ
  • srch-wt โ€” NUMBER โ€” Optional โ€” A number indicating the likelihood that this element contains an actual hit when doing a full-text search. It may be used as a relevance indicator. Relevance queen. ๐Ÿ‘‘
  • pointsz โ€” NUMBER โ€” Optional โ€” The height of the font in points. By default, the main body of the document is 10 point. (Ten. Point. Default. Don't forget it. ๐Ÿ’…)
  • set-width โ€” NUMBER โ€” Optional โ€” The width of the font in points; the default is the point size. The set width is similar to point size but refers to relative width rather than height. For example, an 8 point font based on a square would be 8 pt., 8 set. Square font supremacy ๐ŸŸช
  • color โ€” CDATA โ€” Optional โ€” One of the 42 common desktop environment (CDE) colors or RGB:rrrr/gggg/bbbb.
  • xlfd, xlfdi, xlfdb, xlfdib โ€” CDATA โ€” Optional โ€” These attributes should always be specified as a group (fr fr, do not split them up ๐Ÿ™ˆ). They are X logical font descriptions (XLFD) typeface names for use on the X Window System. Specified, for example, as -adobe-helvetica-bold-i-narrow-*-. The four specifications are for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of exactly what font is desired. In the usual case, only the logical typeface specifcations (style, spacing, weight, slant) are given.
  • typenam, typenami, typenamb, typenamib โ€” CDATA โ€” Optional โ€” These attributes should always be specified as a group too โ€” they're a package deal ๐ŸŽ. They are the MS-Windows typeface name with a maximum of 32 characters. There is one specification each for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of the desired font and, in the usual case, only provides the following logical type specifications.
  • style โ€” serif, sans-serif, symbol โ€” Optional โ€” The font style.
  • spacing โ€” monospace, propspace โ€” Optional โ€” Specifies fixed versus proportional spacing.
  • weight โ€” medium, bold โ€” Optional โ€” Specifies normal versus bold font.
  • slant โ€” roman, italic, rev-italic โ€” Optional โ€” Specifies Roman, italic or reverse italic font.
  • special โ€” underline, strikeout, none โ€” Optional โ€” Special attribute of the font. The underline value is interpreted as appropriate for the font. Some non-European fonts use overlining for the purpose filled by underlining in European fonts. Cultural font differences, we respect them ๐ŸŒ
  • tgroup dispwid="6.08in"

๐ŸŒˆ HEADSTYLE ๐ŸŒˆ

๐ŸŽ€ Purpose

Provides formatting, font and semantic information for headings ( head and subhead). Basically the keystyle treatment but for your headings โ€” main character energy for your titles. โœจ๐Ÿ‘‘

โœจ SYNOPSIS โœจ

okay bestie, here's the whole headstyle declaration in all its glory โ€” read it slow, it's a lot ๐Ÿ’…

&<!ELEMENT headstyle      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST headstyle      class       (label                |
                                      head                  |
                                      caption               |
                                      undefhead             )      #REQUIRED
                          ssi         CDATA                        #IMPLIED
                          rlevel      NUMBER                       #IMPLIED
                          phrase      CDATA                        #IMPLIED
                          srch-wt     CDATA                        #IMPLIED
                          orient      (left-orient          |
                                      center-orient         |
                                      right-orient          |
                                      left-corner-orient    |
                                      right-corner-orient   )      #IMPLIED
                          vorient     (top-vorient          |
                                      bottom-vorient        |
                                      center-vorient        )      #IMPLIED
                          placement   (object               |
                                      parent                )      #IMPLIED
                          headw       CDATA                        #IMPLIED
                          stack       (horiz                |
                                      vert                  )      #IMPLIED
                          flow        (wrap                 |
                                      nowrap                )      #IMPLIED
                          phrase      CDATA                        #IMPLIED
                          srch-wt     NUMBER                       #IMPLIED
                          pointsz     NUMBER                       #IMPLIED
                          set-width   NUMBER                       #IMPLIED
                          color       CDATA                        #IMPLIED
                          xlfd        CDATA                        #IMPLIED
                          xldfi       CDATA                        #IMPLIED
                          xlfdb       CDATA                        #IMPLIED
                          xlfdib      CDATA                        #IMPLIED
                          typenam     CDATA                        #IMPLIED
                          typenami    CDATA                        #IMPLIED
                          typenamb    CDATA                        #IMPLIED
                          typenamib   CDATA                        #IMPLIED
                          style       (serif                |
                                      sans-serif            |
                                      symbol                )      #IMPLIED
                          spacing     (monospace            |
                                      propspace             )      #IMPLIED
                          weight      (medium               |
                                      bold                  )      #IMPLIED
                          slant       (roman                |
                                      italic                |
                                      rev-italic            )      #IMPLIED
                          special     (underline            |
                                      strikeout             |
                                      none                  )      #IMPLIED
                          f-margin    CDATA                        #IMPLIED
                          l-margin    CDATA                        #IMPLIED
                          r-margin    CDATA                        #IMPLIED
                          t-margin    CDATA                        #IMPLIED
                          b-margin    CDATA                        #IMPLIED
                          border      (no-border            |
                                      full-border           |
                                      horizontal-border     |
                                      vertical-border       |
                                      top-border            |
                                      bottom-border         |
                                      left-border           |
                                      right-border          )      #IMPLIED
                          justify     (left-justify         |
                                      right-justify         |
                                      center-justify        |
                                      numeric-justify       )      #IMPLIED
                          vjust       (top-vjust            |
                                      bottom-vjust          |
                                      center-vjust          )      #IMPLIED >
tgroup dispwid="6.58in"

likeโ€ฆ look at her go ๐Ÿซถ she is thriving on quantity. every attribute is listed, nothing skipped, and yes class is the one that's #REQUIRED โ€” the rest are all #IMPLIED, no pressure ๐Ÿ’…


๐ŸŽ€ DESCRIPTION ๐ŸŽ€

so what does headstyle actually do? she's the element that carries the semantic, font and formatting info for headings โ€” specifically head and subhead โ€” in the document. main character of the heading world, honestly ๐Ÿ‘‘

Here's the vibe check on how matching works, bestie, because this part is lowkey the whole point:

  • When a heading pops up in the document and that heading has an ssi attribute, the toss list of headstyle elements gets searched โœจ and an attempt is made to match the class and ssi attributes of the heading to the class and ssi attributes of the headstyle.
  • If the headstyle specifies an rlevel attribute, the search gets further refined ๐Ÿ” by matching the level of the element containing the heading to the rlevel of the headstyle.
  • And if the element containing the heading doesn't have a level attribute? then the level of its containing element is used, and so on. it just keeps going up the chain, she's persistent like that ๐Ÿงš
  • A headstyle element with no ssi specified matches any ssi in a head element โ€” though an explicit class/ssi pair is chosen in preference. so the specific one wins, periodt ๐Ÿ’–

And then โ€” the slay โ€” when a match is found, the font and style information contained in the headstyle is used in formatting the heading. that's it, that's the payoff ๐ŸŒธ

okay so, the attributes of headstyle are:

  • class (label, Required) โ€” the general type of the heading in the document. The label values are head, annotation, phead, and udefhead.
  • ssi (CDATA, Optional) โ€” a source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. When the original markup was conforming to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers.
  • rlevel (NUMBER, Optional) โ€” used to further refine matches of the class and ssi attributes. If present, the rlevel of the headstyle is matched against the level of the element containing the heading or, if none, the level of the first containing element with a level attribute.
  • phrase (CDATA, Optional) โ€” a natural language phrase describing the semantics (meaning) of the element in the original SGML document that was translated into this heading. This phrase can be used to present an interface to the reader for searching or otherwise examining the document.
  • srch-wt (NUMBER, Optional) โ€” a number indicating the likelihood that this element contains an actual hit when doing a full-text search.
  • srch-wt (NUMBER, Optional) โ€” a number indicating the likelihood that this element contains an actual hit when doing a full-text search. yes bestie, the source lists this one twice, so here it is twice ๐Ÿ’€
  • orient (left-orient, center-orient, right-orient, left-margin-orient, right-margin-orient, left-corner-orient, right-corner-orient, Optional) โ€” the horizontal orientation of the head with respect to its associated element or of the subhead with respect to its head. The default is center-orient. This value is used in conjunction with the vorientattribute to orient the heading. The corner orientations are to place the heading in one of the four corners above or below (top-vorient or bottom-vorient) and to the right or left (right-corner-orient or left-corner-orient) of the associated element. The margin orientations left or right justified this heading with respect to the text of the heading parent. For example, a headstyle with orient=left-margin-orient and vorient=top-vorient places the heading above the parent element aligning the left margins of the parent and the heading.
  • vorient (top-vorient, bottom-vorient, center-vorient, Optional) โ€” the vertical orientation of the head with respect to its associated element or of the subhead with respect to its head. The default is top-vorient.
  • placement (object, parent, Optional) โ€” this attribute applies only to head elements. This attribute indicates whether the orient and vorient attributes apply to the head proper or to the entire head object, including all its subhead elements. This attribute should default to parent.
  • headw (CDATA, Optional) โ€” the percentage of the available space for the current element that should be given to its head or the percentage of the head that should be given to its subhead. It is expressed as a fixed point number 1 to 10000 with an implied decimal point two places to the left of the right side.
  • stack (horiz, vert, Optional) โ€” where to put this head or subhead if it collides with one already placed. Horizontal stacking means place this one to the right of the other. Vertical stacking means place this one under the other. This attribute should default to vert.
  • flow (wrap, nowrap, join, Optional) โ€” specifies whether the text of the containing element should flow around the heading or not. The default is no-wrap. A flow of join implies starting the content of the surrounding element immediately after this head. That is, on the same line as the bottom of this head.
  • pointsz (NUMBER, Optional) โ€” the height of the font in points. By default, the main body of the document is 10 point.
  • set-width (NUMBER, Optional) โ€” the width of the font in points; the default is the point size.

The set width is similar to point size but refers to relative width rather than height. For example, an 8 point font based on a square would be 8 pt., 8 set.

  • color โ€” CDATA, Optional. One of the 42 CDE colors or RGB:rrrr/gggg/bbbb.
  • xlfd, xlfdi, xlfdb, xlfdib โ€” CDATA, Optional. These attributes should always be specified as a group. Theyโ€™re X logical font description (XLFD) typeface names for use on the X Window System, specified, for example, as -adobe-helvetica-bold-i-narrow-*-. The four specifications are for normal, italic, bold and bold-italic. This attribute should only be specified if the author is sure of the desired font. In the usual case, only the logical typeface specifications (style, spacing, weight, slant) is given.
  • typenam, typenami, typenamb, typenamib โ€” CDATA, Optional. These attributes should always be specified as a group. Theyโ€™re the MS-Windows typeface name with a maximum of 32 characters. There is one specification each for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of the desired font and, in the usual case, only provide the following logical type specifications.
  • style โ€” serif, sans-serif, symbol; Optional. The font style.
  • spacing โ€” monospace, propspace; Optional. Specifies fixed versus proportional spacing.
  • weight โ€” medium, bold; Optional. Specifies normal versus bold font.
  • slant โ€” roman, italic, rev-italic; Optional. Specifies Roman, italic or reverse italic font.
  • special โ€” underline, strikeout, none; Optional. Special attribute of the font. The underline value is interpreted as appropriate for the font. Some non-European fonts use overlining for the purpose filled by underlining in European fonts.
  • f-margin โ€” CDATA, Optional. The first line margin (it may be negative). A number used to indicate the extension or indentation at the start of a paragraph. The default value is zero.
  • l-margin โ€” NUMBER, Optional. The left margin. This value is additive, that is, if an element has a left margin and is (logically) contained in another element having a left margin, the contained element will have a left margin equal to the sum of the two values. This value is measured in current character widths. The default value is zero.
  • r-margin โ€” NUMBER, Optional. The right margin. This value is additive, that is, if an element has a right margin and is (logically) contained in another element having a right margin, the contained element will have a right margin equal to the sum of the two values. This value is measured in current character widths. The default value is zero.
  • t-margin โ€” NUMBER, Optional. The top margin. This value takes the maximum, that is, if an element has a top margin and is (logically) contained in another element having a top margin, the two elements together have a top margin equal to the greater of the two. This value is measured in current line height. The default value is zero.
  • b-margin โ€” NUMBER, Optional. The bottom margin. This value takes the maximum, that is, if an element has a bottom margin and is (logically) contained in another element having a bottom margin, the two elements together have a bottom margin equal to the greater of the two. This value is measured in current line height. The default value is zero.
  • border โ€” no-border, full-border, horizontal-border, vertical-border, top-border, bottom-border, left-border, right-border; Optional. Specifies the decoration type. The default is no-border.
  • justify โ€” left-justify, right-justify, center-justify, numeric-justify; Optional. Horizontal justification of the text or data. The default is left-justify. The numeric-justify value implies alignment of decimal points.
  • vjust โ€” top-vjust, bottom-vjust, center-vjust; Optional. The alignment of the head or subhead in the space carved out by the largest head or subhead in the same plane. That is, should this head or subhead be aligned with the top of the largest related head or subhead, the bottom, or the center. In general, the vjust attribute may be seen as justifying text vertically. If a head or subhead is being placed alongside another head or subhead and the other one

โ€ฆso when the thing you're placing is longer than the thing already sitting there? The one being placed gets an implicit length equal to the already-placed one's length, and then the vjust attribute justifies the text inside that length. Slay, that's the whole rule ๐Ÿ’…

tgroup dispwid="7.52in"

๐ŸŽ€ FORMSTYLE ๐ŸŽ€

๐Ÿ’– Purpose ๐Ÿ’–

okay so โ€” this one hands out the formatting, the font and the semantic tea for form elements. All three. Iconic multitasking, we love to see it โœจ

โœจ SYNOPSIS โœจ

like, literally the whole declaration, no edits, here it is bestie:

&<!ELEMENT formstyle      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST formstyle      (class      table               |
                                      list                |
                                      text                |
                                      udeffrmt            )      #REQUIRED
                          ssi         CDATA                      #IMPLIED
                          rlevel      NUMBER                     #IMPLIED
                          phrase      CDATA                      #IMPLIED
                          srch-w      CDATA                      #IMPLIED
                          phrase      CDATA                      #IMPLIED
                          srch-wt     NUMBER                     #IMPLIED
                          pointsz     NUMBER                     #IMPLIED
                          set-width   NUMBER                     #IMPLIED
                          color       CDATA                      #IMPLIED
                          xlfd        CDATA                      #IMPLIED
                          xldfi       CDATA                      #IMPLIED
                          xlfdb       CDATA                      #IMPLIED
                          xlfdib      CDATA                      #IMPLIED
                          typenam     CDATA                      #IMPLIED
                          typenami    CDATA                      #IMPLIED
                          typenamb    CDATA                      #IMPLIED
                          typenamib   CDATA                      #IMPLIED
                          style       (serif              |
                                      sans-serif          |
                                      symbol              )      #IMPLIED
                          spacing     (monospace          |
                                      propspace           )      #IMPLIED
                          weight      (medium             |
                                      bold                )      #IMPLIED
                          slant       (roman              |
                                      italic              |
                                      rev-italic          )      #IMPLIED
                          special     (underline          |
                                      strikeout           |
                                      none                )      #IMPLIED
                          f-margin    CDATA                      #IMPLIED
                          l-margin    CDATA                      #IMPLIED
                          r-margin    CDATA                      #IMPLIED
                          t-margin    CDATA                      #IMPLIED
                          b-margin    CDATA                      #IMPLIED
                          border      (no-border          |
                                      full-border         |
                                      horizontal-border   |
                                      vertical-border     |
                                      top-border          |
                                      bottom-border       |
                                      left-border         |
                                      right-border        )      #IMPLIED
                          vjust       (top-vjust          |
                                      bottom-vjust        |
                                      center-vjust        )      #IMPLIED >
tgroup dispwid="6.47in"
๐Ÿซถ quick heads up: yes, phrase shows up twice in that ATTLIST. That's how the page has it โ€” bestie, we do not clean up the original. Copy it exactly, both times, no cap ๐Ÿ’€

๐ŸŒธ DESCRIPTION ๐ŸŒธ

So the formstyle element is your little info packet of semantic, font and formatting deets for form elements. That's the vibe. ๐Ÿ’…

Here's the whole matching ritual, and honestly it's giving detective main character energy ๐Ÿ”: when a form element shows up in the document and that element has an ssi attribute, the toss list of formstyle elements gets searched โ€” and the search tries to match the element's class and ssi attributes against the formstyle's class and ssi attributes. Matchy matchy, cute.

And if the formstyle specifies an rlevel attribute? The search gets further refined by matching the nesting level of the form to the rlevel of the formstyle. Extra precision, extra slay โœจ

โœจ And here's the little plot twist โ€” a formstyle element with no ssi specified matches any ssi in a form, although an explicit class/ssi pair is chosen in preference. So the generic one is the fallback bestie, not the first pick ๐ŸŽ€

When a match is found, the font and style information contained in the formstyle is used in formatting the element. Done. That's the whole glow-up ๐Ÿ˜ญ๐Ÿ’–

okay so the attributes of formstyle are:

  • class โ€” the values it takes are table, cell, list item, text, udeffrmt. Required. It's the general function of the form in the document. periodt. ๐Ÿ’…
  • ssi โ€” CDATA, Optional. It's a source semantic identifier, and bestie, this identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. Why do we even care? Because the source semantic identifier may assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. And when the original markup conforms to a domain specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. iconic behavior honestly ๐Ÿ”โœจ
  • rlevel โ€” NUMBER, Optional. Used to further refine matches of the class and ssi attributes. If it's present, the rlevel of the formstyle is matched against the nesting level of the form being formatted. cute little filter ๐ŸŽ€
  • phrase โ€” CDATA, Optional. A natural language phrase describing the semantics (meaning) of the element in the original SGML document that was translated into this form. This phrase can be used to present an interface to the reader for searching or otherwise examining the document. it's giving "human-readable label" energy ๐Ÿซถ
  • srch-wt โ€” NUMBER, Optional. A number indicating the likelihood that this element contains an actual hit when doing a full-text search. lowkey a vibe check for search results ๐Ÿ‘€
  • colw โ€” CDATA, Optional. Column widths โ€” one specification for each column in the form. The amounts given for each column are summed, and each column is then given a fraction of the available formatting space equal to its specification divided by the total. ๐Ÿงฎ

Specifications take the form D[,T[,G]] where D is the desired (optimal) column width, T is the amount the column is willing to grow (take) and, if G is unspecified, willing to give (that is, plus or minus). G is the amount the column is willing to shrink (give). Column specifications are delimited by a space.

For example, a specification of:

COLW=``10 90''

implies two columns with the first taking 10% of the available space and the second taking 90%. If either column has a graphic or unsplittable word that pushes it over the size specified, a horizontal scrollbar is added and the available space is grown until the requirement can be met.

A specification of:

COLW=``20,5 80,5''

implies two columns with the first optimally taking 20% and the second optimally taking 80%. Each column, however, is willing to shrink or grow such that the ranges of sizes run from 15/85 to 25/75. If the sizes cannot be adjusted to contain a graphic or unsplittable word, a horizontal scrollbar is added and the available space is grown until the requirement is met.

Finally, a specification of:

COLW=``20,10,5 80,5,10''

implies two columns with the first optimally taking 20% of the available space but willing to take as much as 30% or as little as 15%. The second column desires 80% but is willing to take as much as 85% or as little as 70% of the available space. A scrollbar may be added to the viewed space if the constraints cannot be met. ๐Ÿ˜ค

The specifications need not all be uniformly singles, doubles or triples. That is, a legal specification could take the form:

COLW=``20,5 80,0,5''

that translates to two columns; the first desiring 20% of the available space but willing to take as much as 25% or as little as 15/80 (18.75%). The second column desires 80% of the available space, but is willing to take as little as 75%.

The totals in the above examples usually add up to 100. This value is mere convention for ease of use โ€” in practice, the sum of desired points may be any number. ๐Ÿ“

If the number of columns specified is greater than the ncols attribute of the fstyle of the related form, the extra specifications are ignored. If the number of columns specified is less than the ncols attribute, the final specification is replicated to cover the actual number of columns. no cap, that's the whole rule ๐Ÿ’ซ

  • colj โ€” CDATA, Optional. The column justification is the default justification applied to each cell in the column. This attribute is a list of ncols

...letters chosen from l, r, c and d. These letters specify left, right, centered and decimal justification, respectively. This attribute defaults to l.

  • pointsz โ€” NUMBER, optional. The height of the font in points. By default, the main body of the document is 10 point. โœจ
  • set-width โ€” NUMBER, optional. The width of the font in points; the default is the point size. Set width is lowkey similar to point size but it refers to relative width rather than height. For example, an 8 point font based on a square would be 8 pt., 8 set.
  • color โ€” CDATA, optional. One of the 42 common desktop environment (CDE) colors, or RGB:rrrr/gggg/bbbb.
  • xlfd, xlfdi, xlfdb, xlfdib โ€” CDATA, optional. Okay so these attributes should always be specified as a group, no cap. They are X logical font descriptions (XLFD) typeface names for use on the X Window System. Specified, for example, as -adobe-helvetica-bold-i-narrow-*-. The four specifications are for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of exactly what font is desired. In the usual case, only the logical typeface specifications (style, spacing, weight, slant) is given. ๐Ÿ‘‘
  • typenam, typenami, typenamib โ€” CDATA, optional. These attributes should always be specified as a group with a maximum of 32 characters. There is one specification each for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of the desired font and, in the usual case, only provides the following logical type specifications.
  • style โ€” values: serif (the default), sans-serif, symbol. The font style. ๐Ÿ’…
  • spacing โ€” values: monospace, propspace. Specifies fixed versus proportional spacing.
  • weight โ€” values: medium (the default), bold. Specifies normal versus bold font.
  • slant โ€” values: roman (the default), italic, rev-italic. Specifies Roman, italic or reverse italic font.
  • special โ€” values: underline (the default), italic, rev-italic, strikeout, none. Special attribute of the font. The underline value is interpreted as appropriate for the font. Some non-European fonts use overlining for the purpose filled by underlining in European fonts. ๐Ÿฆ‹
  • l-margin โ€” NUMBER, optional. The left margin. This value is additive, that is, if an element has a left margin and is (logically) contained in another element having a left margin, the contained element will have a left margin equal to the sum of the two values. This value is measured in current character widths and defaults to zero.
  • r-margin โ€” NUMBER, optional. The right margin. This value is additive, that is, if an element has a right margin and is (logically) contained in another element having a right margin, the contained element will have a right margin equal to the sum of the two values. This value is measured in current character widths and defaults to zero.
  • t-margin โ€” NUMBER, optional. The top margin. This value takes the maximum, that is, if an element has a top margin and is (logically) contained in another element having a top margin, the two elements will together have a top margin equal to the greater of the two. This value is measured in current line height and defaults to zero.
  • b-margin โ€” NUMBER, optional. The bottom margin. This value takes the maximum, that is, if an element has a bottom margin and is (logically) contained in another element having a bottom margin, the two elements together have a bottom margin equal to the greater of the two. This value is measured in current line height and defaults to zero. ๐Ÿ’€
  • border โ€” values: no-border (the default), full-border, horizontal-border, vertical-border, top-border, bottom-border, left-border, right-border. Specifies the decoration type. The default is no-border.
  • vjust โ€” values: top-vjust (the default), bottom-vjust, center-vjust. Vertical justification of the text of this element. The default is top-vjust.
tgroup dispwid="6.79in"

๐ŸŽ€ FRMTSTYLE ๐ŸŽ€

๐Ÿ’– Purpose ๐Ÿ’–

Provides formatting, font and semantic information for virpage, block and p elements. Literally the glow-up department for your text, periodt. โœจ

&<!ELEMENT frmtstyle           - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST frmtstyle      (class      table               |
                                      list                |
                                      text                |
                                      udeffrmt            )      #REQUIRED
                          ssi         CDATA                      #IMPLIED
                          rlevel      NUMBER                     #IMPLIED
                          phrase      CDATA                      #IMPLIED
                          srch-wt     CDATA                      #IMPLIED
                          phrase      CDATA                      #IMPLIED
                          srch-wt     NUMBER                     #IMPLIED
                          pointsz     NUMBER                     #IMPLIED
                          set-width   NUMBER                     #IMPLIED
                          color       CDATA                      #IMPLIED
                          xlfd        CDATA                      #IMPLIED
                          xldfi       CDATA                      #IMPLIED
                          xlfdb       CDATA                      #IMPLIED
                          xlfdib      CDATA                      #IMPLIED
                          typenam     CDATA                      #IMPLIED
                          typenami    CDATA                      #IMPLIED
                          typenamb    CDATA                      #IMPLIED
                          typenamib   CDATA                      #IMPLIED
                          style       (serif              |
                                      sans-serif          |
                                      symbol              )      #IMPLIED
                          spacing     (monospace          |
                                      propspace           )      #IMPLIED
                          weight      (medium             |
                                      bold                )      #IMPLIED
                          slant       (roman              |
                                      italic              |
                                      rev-italic          |      #IMPLIED
                          special     (underline          |
                                      strikeout           |
                                      none                )      #IMPLIED
                          f-margin    CDATA                      #IMPLIED
                          l-margin    CDATA                      #IMPLIED
                          r-margin    CDATA                      #IMPLIED
                          t-margin    CDATA                      #IMPLIED
                          b-margin    CDATA                      #IMPLIED
                          border      (no-border          |
                                      full-border         |
                                      horizontal-border   |
                                      vertical-border     |
                                      top-border          |
                                      bottom-border       |
                                      left-border         |
                                      right-border        )      #IMPLIED
                          vjust       (top-vjust          |
                                      bottom-vjust        |
                                      center-vjust        )      #IMPLIED
                          justify     (left-justify       |
                                      right-justify       |
                                      center-justify      |
                                      numeric-justify     )      #IMPLIED >
tgroup dispwid="6.60in"

๐Ÿซถ DESCRIPTION ๐Ÿซถ

Okay so the frmtstyle element is literally the glow-up station ๐Ÿ’… โ€” it carries the semantic, font and formatting info for virpage, block and p elements. She's the one holding the whole aesthetic together, no cap.

Here's how the matching actually goes down, bestie, pay attention ๐ŸŽ€:

When one of the elements listed in the FRMSTYLE Synopsis shows up in the document and that element has an ssi attribute, the toss list of frmtstyle elements gets searched, and a match is attempted between the class and ssi attributes of the element and the class and ssi attributes of the frmtstyle. Like, are you the same person or not, bestie? ๐Ÿ‘€

If the frmtstyle specifies an rlevel attribute, the search gets further refined โ€” fancy, I know โ€” by matching the level of the element containing the element to the rlevel of the frmtstyle. And if that element doesn't have a level attribute? Then the level of its containing element is used, and so on, and so on, all the way up ๐Ÿ”ฅ. It's giving ancestral lineage investigation, honestly.

One exception to clock: a frmtstyle element with no ssi specified matches any ssi in a formattable element โ€” but an explicit class/ssi pair always gets chosen in preference. So the specific queen wins, periodt ๐Ÿ‘‘.

And when a match is found? The font and style info chillin' inside that frmtstyle gets used to format the element. Slay, that's the whole point โœจ.

  • class โ€” Required. This is the general function of the form in the document, and the values it can take are table, cell, list, item, text, and udeffrmt. Bestie, this one is literally not optional, so pick one ๐Ÿ’…
  • ssi โ€” Optional, type CDATA. The general function of the form โ€” a source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. And when the original markup conforms to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. Ik it's a lot of words but it's giving โœจpreserve the vibe of the original markupโœจ
  • rlevel โ€” Optional, type NUMBER. Used to further refine matches of the class and ssi attributes. If present, the rlevel of the frmtstyle is matched against the level of the element being formatted or, if none, the level of the first containing element with a level attribute. Lowkey the detective of the attribute squad ๐Ÿ”
  • phrase โ€” Optional, type CDATA. A natural language phrase describing the semantics (meaning) of the element in the original SGML document that was translated into this element. This phrase can be used to present an interface to the reader for searching or otherwise examining the document. Fr fr it's the human-readable receipt of what this thing means ๐Ÿงพ
  • srch-wt โ€” Optional, type NUMBER. A number indicating the likelihood that this element contains an actual hit when doing a full-text search. It's giving search-engine main character energy ๐Ÿ‘‘
  • pointsz โ€” Optional, type NUMBER. The height of the font in points. By default, the main body of the document is 10 point. No cap, ten points is the default glow-up โœจ
  • set-width โ€” Optional, type NUMBER. The width of the font in points; the default is the point size. The set width is similar to point size but refers to relative width rather than height. For example, an 8 point font based on a square would be 8 pt., 8 set. Width not height, bestie โ€” it's a whole different axis ๐ŸŽ€
  • color โ€” Optional, type CDATA. One of the 42 CDE colors or RGB:rrrr/gggg/bbbb. Forty-two whole colors, that's so many fits to choose from ๐ŸŒˆ
  • xlfd, xlfdi, xlfdb, xlfdib โ€” Optional, and heads up: these attributes should always be specified as a group ๐Ÿซถ They are X logical font description (XLFD) typeface names for use on the X Window System. Specified, for example, as -adobe-helvetica-bold-i-narrow-*-. The four specifications are for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of exactly what font is desired. In the usual case, only the logical typeface specifications (style, spacing, weight, slant) are given. Ngl, don't go naming fonts unless you're sure sure ๐Ÿ’€
  • typenam, typenami, typenamb, typenamib โ€” Optional, and again: these attributes should always be specified as a group. They are the MS-Windows typeface names with a maximum of 32 characters. There is one specification each for normal, italic, bold and bold-italic. These attributes should only be specified if the author is sure of the desired font. In the usual case, only the logical typeface specifications (style, spacing, weight, slant) are given. Same rule as above, just Windows-flavored ๐ŸชŸ
  • style โ€” Optional. The font style, and your options are serif, sans-serif, and symbol. Pick your fighter ๐ŸฅŠ
  • spacing โ€” Optional. Specifies fixed versus proportional spacing, via monospace and propspace. Aesthetic AND functional, we love to see it ๐Ÿ’œ
  • weight โ€” Optional. Specifies normal versus bold font, i.e. medium or bold. Bold is a personality, honestly ๐Ÿ”ฅ
  • slant โ€” Optional. Specifies Roman, italic or reverse italic font โ€” so roman, italic, rev-italic. Reverse italic is such an underrated icon ๐Ÿ™ˆ
  • special โ€” Optional. Special attribute of the font. The values are underline, strikeout, and none. The underline value is interpreted as appropriate for the font. Some non-European fonts use overlining for the purpose filled by underlining in European fonts. Little cultural font moment, we respect it ๐ŸŒธ
  • f-margin โ€” Optional, type CDATA. The first line margin (it may be negative). A number used to indicate the extension or indentation at the start of a paragraph. The default value is zero. Yes bestie, negative is allowed, live your truth ๐Ÿ˜ญ
  • l-margin โ€” Optional, type NUMBER. The left margin. This value is additive, that is, if an element has a left margin and is (logically) contained in another element having a left margin, the contained element will have a left margin equal to the sum of the two values. This value is measured in current character widths. The default value is zero. Additive margins, so they stack like group-chat notifications ๐Ÿ“š
  • r-margin โ€” Optional, type NUMBER. The right margin. This value is additive, that is, if an element has a right margin and is (logically) contained in another element having a right margin, the contained element will have a right margin equal to the sum of the two values. This value is measured in current character widths. The default value is zero. Same stacking situation, just on the right side โœจ

Okay so we're still deep in the attribute table and these next ones are giving layout realness ๐Ÿ’…

  • t-margin โ€” type NUMBER, optional. The top margin. This value takes the maximum, meaning if an element has a top margin and is (logically) contained in another element that also has a top margin, the two elements together have a top margin equal to the greater of the two. Measured in current line height. Default value is zero.
  • b-margin โ€” type NUMBER, optional. The bottom margin. This value takes the maximum, meaning if an element has a bottom margin and is (logically) contained in another element that also has a bottom margin, the two elements together have a bottom margin equal to the greater of the two. Measured in current line height. Default value is zero.
  • border โ€” optional. Specifies the decoration type. Values are no-border, full-border, horizontal-border, vertical-border, top-border, bottom-border, left-border, right-border. The default is no-border.
  • vjust โ€” optional. Vertical justification of the text of this element. Values are top-vjust, bottom-vjust, center-vjust. The default is top-vjust.
  • justify โ€” optional. Horizontal justification of the text or data. Values are left-justify, right-justify, center-justify, numeric-justify. The default is left-justify. The numeric-justify value implies alignment of decimal points.

And the table wrapper literally says:

tgroup dispwid="6.90in"

๐ŸŽ€ GRPHSTYLE

๐ŸŽฏ Purpose

It provides formatting and semantic information for refitem elements with a class attribute value taken from the graphic class. Periodt. โœจ

๐ŸŒธ SYNOPSIS

&<!ELEMENT grphstyle      - O EMPTY >
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
&<!ATTLIST grphstyle      (class     figure              |
                                     in-line             |
                                     button              |
                                     icon                |
                                     udefgrph            )      #REQUIRED
                          ssi        CDATA                      #IMPLIED
                          rlevel     NUMBER                     #IMPLIED
                          phrase     CDATA                      #IMPLIED
                          l-margin   CDATA                      #IMPLIED
                          r-margin   CDATA                      #IMPLIED
                          t-margin   CDATA                      #IMPLIED
                          b-margin   CDATA                      #IMPLIED
                          border     (no-border          |
                                     full-border         |
                                     horizontal-border   |
                                     vertical-border     |
                                     top-border          |
                                     bottom-border       |
                                     left-border         |
                                     right-border        )      #IMPLIED
                          vjust      (top-vjust          |
                                     bottom-vjust        |
                                     center-vjust        )      #IMPLIED
                          justify    (left-justify       |
                                     right-justify       |
                                     center-justify      )      #IMPLIED >
tgroup dispwid="6.49in"

โœจ DESCRIPTION (the grphstyle era) โœจ

Okay bestie, so the grphstyle element is literally the glow-up crew for refitem elements that have a class attribute pulled straight from the graphic class. It hands over the semantic, font and formatting deets. Iconic behavior, truly.

So here's the vibe check on how matching works ๐Ÿ‘‡

When one of the above elements shows up in the document and it's got an ssi attribute, the toss list of grphstyle elements gets searched, and we try to match the class and ssi attributes of the element against the class and ssi attributes of the grphstyle. If the grphstyle also specifies an rlevel attribute, the search gets even more refined by matching the level of the element containing the element to the rlevel of the grphstyle.

And like, where does a refitem's level even come from? It's taken from the level of its enclosing block, bestie. If that enclosing block doesn't have a level attribute, the level of its enclosing virpage gets used instead. Also super important: a grphstyle element with no ssi specified matches any ssi in a refitem element โ€” but a real explicit class/ssi pair gets chosen in preference. Periodt. ๐Ÿ’…

When a match is found, the style info in the grphstyle is used in formatting the graphic. Slay.


๐ŸŽ€ The attributes of grphstyle ๐ŸŽ€

  • class โ€” Required. The general function of the graphic in the document. Your options are literally:
    • figure
    • in-line
    • button
    • icon
    • udefgrph
  • ssi โ€” CDATA, Optional. A source semantic identifier. This identifier is chosen by the author of a higher level DTD to SDL translator. It may either reflect the meaning of the markup in the original document, or it may reflect the actual generic identifier in the original document. The source semantic identifier may be used to assist in semantic searches of the SDL-conforming document by preserving the original intent of the markup. And when the original markup was conforming to a domain-specific DTD, the ssi may be used to enable structured searches of the SDL-conforming document by preserving the original generic identifiers. (Basically it's the receipts for what the markup used to be, iykyk.)
  • rlevel โ€” NUMBER, Optional. Used to further refine matches of the class and ssi attributes. If present, the rlevel of the grphstyle is matched against the level of the first containing element with a level attribute.
  • phrase โ€” CDATA, Optional. A natural language phrase describing the semantics (meaning) of the element in the original SGML document that was translated into this element. This phrase can be used to present an interface to the reader for searching or otherwise examining the document. Very "here's a lil human-readable summary of the whole thing" of it.
  • l-margin โ€” NUMBER, Optional. The left margin. This value is additive โ€” that is, if an element has a left margin and is (logically) contained in another element having a left margin, the contained element will have a left margin equal to the sum of the two values. Measured in current character widths. Default is zero.
  • r-margin โ€” NUMBER, Optional. The right margin. Also additive โ€” if an element has a right margin and is (logically) contained in another element having a right margin, the contained element will have a right margin equal to the sum of the two values. Measured in current character widths. Default is zero.
  • t-margin โ€” NUMBER, Optional. The top margin. This one takes the maximum instead โ€” if an element has a top margin and is (logically) contained in another element having a top margin, the two elements together have a top margin equal to the greater of the two. Measured in current line height. Default is zero.
  • b-margin โ€” NUMBER, Optional. The bottom margin. Takes the maximum too โ€” if an element has a bottom margin and is (logically) contained in another element having a bottom margin, the two elements together have a bottom margin equal to the greater of the two. Measured in current line height. Default is zero.
  • border โ€” Optional. Specifies the decoration type. The default is no-border. The choices are:
    • no-border
    • full-border
    • horizontal-border
    • vertical-border
    • top-border
    • bottom-border
    • left-border
    • right-border
  • vjust โ€” Optional. Vertical justification of the graphic. The default is top-vjust. Options:
    • top-vjust
    • bottom-vjust
    • center-vjust
  • justify โ€” Optional. Horizontal justification of the graphic. The default is left-justify. Options:
    • left-justify
    • right-justifyt
    • center-justify
๐Ÿซถ Quick heads-up: yeah, right-justifyt really does have that extra t on the end. That's not me typing with my elbow, that's literally what's on the page. Copy it exactly how it is or the parser will be like "???" โ€” no cap.

And then there's this little stray artifact just chilling on the page, a leftover from the table that ate too much at brunch:

tgroup dispwid="6.58in"

She's not really an attribute, she's just there. Leave her be. ๐Ÿ’€


๐ŸŒˆ SEE ALSO ๐ŸŒˆ

Both absolute icons, go read them, they're giving main character energy. ๐Ÿ‘‘


And that's a wrap on part 27, bestie โ€” the whole page is literally source/version dtsdldtd(other), and there's not a single date on the footer to be found, so we're just gonna vibe with that. Thanks for reading all 27 parts, you're a real one ๐Ÿซถโœจ๐ŸŽ€๐Ÿฆ‹๐Ÿ’–

๐Ÿ“ฆ where this page comes from