ISO/IEC JTC 1/SC34 N0305rev

ISO/IEC JTC 1/SC34/WG1

Information Technology --
Document Description and Processing Languages

TITLE:

ISO/IEC TR 9573-11 2nd edition

SOURCE:

Project Editor

PROJECT:

15.07.02.11.00

EDITOR:

Yushi Komachi and Samarin Alexander

STATUS:

Text for DTR processing

ACTION:

DTR processing

DATE:

2002-05-22

DISTRIBUTION:

SC34 and Liaisons

REFER TO:

 

REPLY TO:

 



DTR text (2002-05-22) to

ISO/IEC TR 9573-11 2nd edition
Structure Descriptions and Style Specifications for Standards Document Interchange


Table of Contents

Introduction
1. Scope
2. References
3. Approach to the harmonized set of ISO DTDs
3.1 Document flow (standards only)
3.2 Required DTDs
3.3 Guidelines for harmonization of DTD
3.4 General guidelines
3.5 Technical approach
3.6 Examples
4. Architecture of Standards
4.1 General considerations
4.2 Normative or informative
4.3 Not "All inside all"
5. Element types description for base DTD
5.1 General convention for element types
5.2 General convention for attributes
5.3 The top-level structure of a standard
5.4 Nested subdivisions of text
5.5 Displayed components
5.6 Terminology
5.7 Inline components
5.8 Referential components
5.9 Float components
5.10 Very specific components
5.11 Possible extensions of the DTD
6. Profile
6.1 Introduction
6.2 Architecture
6.3 Boilerplate text support
6.4 Conclusions
7. Master entity dictionary
7.1 General
7.2 Overall structure
7.3 Base and local groups
7.4 Content models
7.5 Attributes modification
7.6 Modification of formulae component
7.7 Modification of figure component
7.8 Modification of table component
8. Derivation of DTDs from the base DTD
9. Authoring DTDs
9.1 Authoring DTD for native SGML tools
9.2 Authoring DTD for word processors
9.3 Use of HTML 3.2 for standards development
10. DTD for terminological standards
11. DTD for multilingual standards
12. All public entities
13. XML DTD
13.1 XMLization
13.2 Modularization
13.3 Non-ISONET base description
 
Annex A Example of terminology in SGML (informative)
Annex B Example of terminology presentation (informative)
Annex C SGML DTDs for profile (informative)
Annex D XML DTD Modules (informative)
Annex E Schema module by RELAX NG (ISO/IEC CD 19757-2) (informative)
Annex F XSLT specification for translation to HTML (informative)


Introduction

The 1st edition of ISO/IEC TR 9573-11:1992 was published in 1992-09-15. Considering the actual works in the ISO system for standard development, the TR was modified to be the "ITSIG exchange DTD" by activities of the SGML group of ISO/ITSIG (Information Technology Strategies Implementation Group).

Responding to the user requirements for interchanging standards documents in XML environment, ITSIG instructed its XML project to develop XML DTD being based on the SGML DTD.

This 2nd edition of ISO/IEC PDTR 9573-11 includes both the SGML and XML DTDs. The clauses except 2, 13, Annex C, D, E are almost identical to the corresponding clauses of "ITSIG exchange DTD, version 0.93, 1998-03-03".

1. Scope

This document describes the harmonized set of ISO DTDs which are designed for use within the ISO system for standards development. The base DTD of this set was created by ITSCG AWG1 during 1994 and 1995. At present, the SGML group of ITSIG is responsible for maintenance of these DTDs.

2. References

The following standards contain provisions that, through reference in this text, constitute provisions of this Technical Report. At the time of publication, the editions indicated are valid. All standards are subject to revision, and parties to agreements based on this Technical Report are encouraged to investigate the possibility of applying the most recent editions of the standards indicated below. Members of IEC and ISO maintain registers of currently valid International Standards.

ISO 8879-1986, Information processing — Text and office systems — Standard Generalized Markup Language (SGML)

ISO/IEC 10744:1997, Information technology — Hypermedia/Time-based Structuring Language (HyTime)

3. Approach to the harmonized set of ISO DTDs

3.1 Document flow (standards only)

The lifecycle of standards comprises three phases: development, publication, and refuse & dissemination. Each phase has different requirements for handling the standards as electronic documents.

The development phase requires simplicity of tools for capturing the content. The experts outside the ISO/CS may use a wide variety of very different tools. The presentation of the standards is of secondary importance; the content and the structure (if feasible) are of primary importance.

The publication phase requires flexibility and automation of routine work. The result must be of a professional publishing quality and enriched for further electronic dissemination.

The refuse & dissemination phase requires independence of a document instance in electronic form from the processing environment. No sophisticated application should be required to reprocess the document. SGML applications are already being used for standards production at the ISO/CS and by many member bodies, and also for the delivery of some commercial electronic products. Some working groups have good experience with SGML. So, it is necessary to define DTDs for use as the interfaces between the various phases.

3.2 Required DTDs

We know that it is not practical to provide a single DTD for everything. It was decided therefore to have a "common" DTD for exchange by published standards and several "in-house" DTDs, i.e. the member bodies could use their own variations of the base DTD (see figure 1).


Figure 1 — SGML applications in our business process

Standards from different member bodies look different and different publishing software is used. By preference, the difference between the exchange DTD and the individual variations should be minimized. Equivalent transformations of DTD fragments will help us to overcome software limitations. For example, we can replace in some cases a "simple" element type by an attribute and vice-versa. Also it is possible to change the names of element types and attributes for the in-house DTDs, e.g. to translate them to German.

To simplify the maintenance of the several very close DTDs, most of them are implemented as a derivation from one base DTD. The authoring DTDs are either simplified versions of the base DTD or widely-used DTDs such as HTML 3.2.

3.3 Guidelines for harmonization of DTD

The guidelines are ordered by the priority (from the highest to the lowest) agreed during the ITSCG AWG1 meeting in Berlin:

  • a) Guarantee reusability of electronic documents (e.g. retrieval possibilities).
  • b) Support production of Standards.
  • c) Be implementable on the modern systems (at least in two independent systems).
  • d) Conform with editorial rules.
  • e) Be suitable to interactive work.
  • f) Respect typographic rules.
  • g) Keep element type names given in ISO/IEC TR 9573-11:1992.

3.4 General guidelines

The general guidelines are:

  • a) Set of harmonized DTDs. For example, in-house DTDs for publishing and common DTD for exchange, i.e. the SDOs could use their own modifications of the base DTD. Also for authoring system we can provided the specialized versions of DTDs.
  • b) Simplified DTD in comparison with ISO/IEC TR 9573-11:1992. We found that the half of the old ISO DTD is not used.
  • c) SGML cannot check the everything, e.g. that a title is not empty. Such problems can be covered by "verification procedures" which we can implement as an external post-processing or as a client in a publishing / authoring system. Hope that such tests could be simple.
  • d) Equivalent transformations of DTD fragments. It should be possible to change the names of element types and attributes for the in-house DTDs. Also one can replace in some cases a simple element type by an attribute and vice versa.
  • e) Management of external references. We are going to freeze a document instance after publishing to prevent any changed by the constantly modified environment. For this reason, all external components such as drawings, boilerplate texts, database extractions should be handled by the public identifiers.
  • f) The difference between base DTD and individual variations should be minimized. Reduce (even eliminate at all) the number of inclusions.
  • g) Don't allow the tag minimization.

3.5 Technical approach

We expect that there is small number of differences between base and in-house DTDs. For example, the base DTD uses CALS table model, while an in-house DTD uses the application-dependent table model. We would like to handle simple differences by one base DTD which is included with some variations into in-house DTD. The base DTD is considered for exchange by published standards. Of course, document instances shall be converted from base to in- house.

DTD. SGML technique to make such simple modifications is described below. The following DTD contains only one element type abc which is define through parameter entity abcname:

<!-- base DTD its PUBLIC ID is "-//ISO/CS//DTD dtd::base//EN" --> <!entity % abcname "abc" > <!element %abcname; - - (#PCDATA) >

The following DTD uses the previous one, but redefines the name of the element type:

<!-- derived DTD --> <!entity % abcname "cba" > <!entity % basedtd PUBLIC "-//ISO/CS//DTD dtd::base//EN" > %basedtd; <!-- insert base DTD -->

This technique is limited, but it is enough in the most our cases.

3.6 Examples

Replacing (via parameter entity std.table) of the table model is demonstrated in the following example:

<!-- in-house DTD --> <!entity % std.table PUBLIC "-//house//DTD table//EN" > <!entity % basedtd PUBLIC "-//ISO/CS//DTD dtd::base//EN" > %basedtd;

4. Architecture of Standards

4.1 General considerations

International Standards are complex technical documents. Their structure, presentation and some guidelines on the contents are given in the ISO/IEC Directives, Part 3, 1997. The table 1 contains the list of components (small building blocks) could be found in the standards. As a rule, a component contains text, special characters, drawings, etc. as well as other components. For example, paragraph and highlighted phrase are components. A component is presented in the DTD as an element type.

Table 1 — Standard's components
Component Display Inline Referential Float
paragraph +
list items (entries) +
note +
example +
warning, remark +
phrase +
cross-reference + +
formula + +
footnotea) + + + +
figure + +
table + +
a) Only in the running text, but not in tables and figures.

To present the logical structure of the document, the components are placed into so-called "containers". For example, a list is a (ordered or unordered) group of list items (or entries). The clauses and subclauses are another type of containers. They contain components and another containers, but not a text.

4.2 Normative or informative

A standard contains normative and informative provisions. The ISO/IEC Directives, part 3 explains "who is who". To reflect this business rule, some element types in the DTD contain an attribute status which can be either normative or informative. If an element type does not contain this attribute then the status of the element is inherited from the parent element in the document instance.

4.3 Not "All inside all"

The first question is which displayed components are allowed inside a paragraph? And so on. Try to answer on all these questions in the table 2.

Table 2 — Component (from the first row) inside a component (from the first column)
paragraphlistnoteexamplewarningfootnotefloatsdisplayed formula
paragraphnoyesyesyesnoyesyesyes
list itemyesyesyesyesnoyesyesyes
notea)yesyesnonononoyesno
exampleyesyesnononoyesyesyes
warnigyesyesnononoyesnono
footnotea)yesyesnononononono
floatsyesyesyesyesyesnonoyes
a) Informative components.

5. Element types description for base DTD

(-//::ISO::CS//DTD std::base::0.93//EN)

5.1 General convention for element types

The name on each element type is taken from ISO 8879:1986 and/or ISO/IEC TR 9573-11:1992 for simplicity. Possible approach is to follow architectural forms and "rename" an element type in the following way:

<!ATTLIST chapter -- in-house name of the ISO element type "h1" -- ISODTD NAME #FIXED "h1">

5.2 General convention for attributes

Most of element types have attribute "ID" for internal cross-references. The element types which generate an additional text, e.g. autonumbering, have attribute "GTEXT" which keeps the generated text, e.g.

"1.3.2&emsp;".

5.3 The top-level structure of a standard

The top-level structure of a standard

5.3.1 General considerations

The top level structure is very in-house dependent. Imagine a national standard which is approved euronorme, which is approved international standard. Such a document may contain several forewords, endorsement notes, copyrights, etc. We decided to keep top level structure as simple as possible, but bearing in mind the interchange aspect.

5.3.2 International Standard(<STANDARD>)

5.3.2.1 Description

This is a root element in a standard.

5.3.2.2 Attributes

An attribute "LANGUAGE" specifies the language of the standard.

5.3.2.3 Usage guidelines

With two parameter entities (std.name and std.model) one can change the element type name and adjust its content model. See clause 8 for detail.

5.3.3 Document profile (<PROFILE>)

This element type is described in clause 6.

5.3.4 Title (or first cover) page (<TPAGE>)

5.3.4.1 Description

This element type is used as a placeholder for the first cover page. There is no structure for title pages which are different for each organization.

5.3.4.2 Content model

The content model is simple text.

5.3.4.3 Usage guidelines

It is considered that the title page is constructed from the information which is available in the profile. This is mandatory element, i.e. a standard shall contain one title page.

5.3.5 Table of contents (<TOC>)

5.3.5.1 Description

This element type is used as a placeholder for the table of contents generated by the publishing system.

5.3.5.2 Content model

The content model is simple text.

5.3.5.3 Attributes

The attribute "LEVEL" permits control over the level to which the subclauses are entered in the table of contents. The default value is "1" which means only the clauses from the body of the standard and annexes.

5.3.5.4 Usage guidelines

This is an optional element, i.e. a standard may contain one table of content.

5.3.6 Foreword (<FOREWORD>)

5.3.6.1 Description

This element type is used to identify foreword clause of the standard.

5.3.6.2 Content model

The content model is rather simple. It cannot contain any subdivisions and any numbered components like notes, figures, etc. Only paragraphs and lists are allowed in foreword.

5.3.6.3 Usage guidelines

This is mandatory element, i.e. a standard shall contain one foreword. Almost whole foreword is a set of boilerplate texts.

5.3.7 Introduction (<INTRO>)

5.3.7.1 Description

This element type is used to identify introduction clause of the standard.

5.3.7.2 Content model

The content model is rather simple. It can contain any subdivisions - unfortunately, ISO/IEC Directives does allow this. It can't contain any numbered components like notes, figures, etc.

5.3.7.3 Usage guidelines

This is an optional element.

5.3.8 Body of a standard (<BODY>)

5.3.8.1 Description

This element type is used to identify the body of the standard.

5.3.8.2 Content model

A body is structured by top-level (<H1>) titled numbered subdivisions of text, i.e. by clauses. There are four special clauses (<SCOPE>, <CONF>, <REFS> and <DEFS>). The body may contain a "warning statement" at the beginning.

5.3.8.3 Attributes

The attribute "COLS" specifies the number of columns. Only one column and two column (default) page layouts are recommended for monolingual standards. The attribute "STATUS" has fixed value "NORMATIVE".

5.3.8.4 Usage guidelines

This is mandatory element. A standard shall have a body. With a parameter entity (body.model) one can change the content model. See clause 8 for detail.

5.3.9 Normative annex (<ANNEXN>)

5.3.9.1 Description

This element type is used to identify a normative annex.

5.3.9.2 Content model

An annex contains either a mixture of basic components or at least two top-level subdivisions of text.

5.3.9.3 Attributes

The optional attribute "COLS" specifies the number of columns. Only one column and two column (default) page layouts are recommended for monolingual standards. The attribute "STATUS" has fixed value "NORMATIVE".

5.3.9.4 Usage guidelines

This optional and repeatable element, i.e. a standard may contain several normative annexes.

5.3.10 Informative annex (<ANNEXI>)

5.3.10.1 Description

This element type is used to identify an informative annex.

5.3.10.2 Content model

An annex contains either a mixture of basic components or at least two top-level subdivisions of text.

5.3.10.3 Attributes

The optional attribute "COLS" specifies the number of columns. Only one column and two column (default) page layouts are recommended for monolingual standards. The attribute "STATUS" has fixed value "INFORMATIVE".

5.3.10.4 Usage guidelines

This optional and repeatable element, i.e. a standard may contain several informative annexes.

5.3.11 Bibliography (<ANNEXBL>)

5.3.11.1 Description

This element type is used to identify a special informative annex with the bibliography.

5.3.11.2 Content model

Some text and the list of bibliographical references are allowed.

5.3.11.3 Attributes

The optional attribute "COLS" specifies the number of columns. Only one column and two column (default) page layouts are recommended for monolingual standards. The attribute "STATUS" has fixed value "INFORMATIVE".

5.3.11.4 Usage guidelines

This optional element. It is the last annex.

5.3.12 Index (<INDEX>)

5.3.12.1 Description

This element type is used as a placeholder for the index generated by the publishing system.

5.3.12.2 Content model

The content model is simple text.

5.3.12.3 Usage guidelines

This is an optional element, i.e. a standard may contain one index.

5.3.13 Last cover page (<LPAGE>)

5.3.13.1 Description

This element type is used as a placeholder for the last cover page. There is no structure for the last cover pages which are different for each organization.

5.3.13.2 Content model

The content model is simple text.

5.3.13.3 Usage guidelines

It is considered that the last cover page is constructed from the information which is available in the profile. This is mandatory element, i.e. a standard shall contain one last cover page.

5.4 Nested subdivisions of text

5.4.1 Architecture

Six nested levels of subdivisions of text are allowed. The top level of subdivision is clause. Another levels are subclauses. The subdivisions are always numbered. They may or may not contain a title.

5.4.2 Titled subdivisions of text (<H1>, <H2>, <H3>, <H4>, <H5>, <H6>)

5.4.2.1 Description

These element types are used to identify the clauses and subclauses of the standard.

5.4.2.2 Content model

For each titled subdivision contain a title <HT>, optional comment for title <CT> (except for dedicated ones), and a mixture of the basic elements - e.g. paragraphs, notes, various types of lists, figures, tables, etc. - or a lower level of text subdivision (either titled or untitled). These element types are typical containers.

The content model is reflected to the several editorial rules. At first, the empty subdivision is not allowed. At second, lower level subdivision shall appear minimum two times. And, at third, hanging text (i.e. a text without a title) is not allowed. In general, the content model looks as: (ht, ct?, ((text)+|(Hx,Hx+))).

As we decided to remove inclusions, the float components (e.g. figure, table, index entry) should be incorporated into the content model. The float components are allowed in the running text, between displayed components and between subdivisions of text. In the following example, there are three possible places for the float elements. All these positions are allowed.

<h1><ht>....</ht> <pos 1> <h2><ht>....</ht>...</h2> <pos 2> <h2><ht>....</ht>...</h2> <pos 3> </h1>

There is a special case - terminology list, which can be alone in a subdivision. Finally, the content model looks terrible.

5.4.2.3 Examples

EXAMPLE 1

<h4 id="x12" gtext="5.4.2.4&emsp;"><ht>Examples</ht> ...

5.4.3 Heading title (<HT>)

5.4.3.1 Description

This element type is used to identify the title of titled subdivisions of text.

5.4.3.2 Content model

Only a running text and simple (no exotic) inline components are allowed inside the title.

5.4.3.3 Usage guidelines

This is mandatory element.

5.4.4 Heading title comment (<CT>)

5.4.4.1 Description

This element type is used to identify the comment to the title of titled subdivisions of text.

5.4.4.2 Content model

Only a running text and simple (no exotic) inline components are allowed inside the title comment.

5.4.4.3 Usage guidelines

This is optional element.

5.4.5 Untitled numbered subdivision of text (<P1>, <P2>, <P3>, <P4>, <P5>, <P6>)

5.4.5.1 Description

These element types are used to identify untitled numbered subdivisions which are very similar to the titled numbered subdivisions of text.

5.4.5.2 Content model

For each untitled subdivision contains a mixture of the displayed components - e.g. paragraphs, notes, various types of lists, figures, tables, etc. - as well as a lower level of untitled text subdivision. Again, these element types are containers.

5.4.5.3 Usage guidelines

Do not treat the untitled numbered subdivisions of text like the "numbered paragraphs". The subdivisions are nested, while the paragraphs are sequential.

5.4.6 Special clause with scope of a standard (<SCOPE>)

5.4.6.1 Description

This element type is used to identify the special clause titled "Scope" in English. No more differences with the element type <H1>.

5.4.6.2 Usage guidelines

This element type is mandatory and is the first clause in the body.

5.4.7 Special clause with conformance of a standard (<CONF>)

5.4.7.1 Description

This element type is used to identify the special clause title "Conformance" in English. No more differences with the element type <H1>.

5.4.7.2 Usage guidelines

This element type is optional and is the next after the scope.

5.4.8 Special clause with normative reference(s) (<REFS>)

5.4.8.1 Description

This element type is used to identify the special clause which contains the normative references used in the standard.

5.4.8.2 Content model

This element type consists of the boilerplate text followed by the list of references (see 5.5.15).

5.4.8.3 Usage guidelines

This element type is optional and is the next clause after the conformance, if any.

5.4.9 Special clause with definition(s) (<DEFS>)

5.4.9.1 Description

This element type is used to identify the special clause which contains the definitions used in the standard.

5.4.9.2 Content model

This element type consists of the boilerplate text followed by terminology list (see 5.6.1).

5.4.9.3 Usage guidelines

This element type is optional and is the next clause after the normative references.

5.5 Displayed components

5.5.1 Paragraph (<P>)

5.5.1.1 Description

This element type is used for the several purposes (badly inherited). At first, to identify the display component which is a block of the text and, at second, to identify a container for this text block and another display components. In the last case it serves as an additional lowest level subdivision of text.

5.5.1.2 Content model

This element type can contain a running text (with inline components), float components, all displayed components except paragraph itself.

5.5.2 Note (<NOTE>)

5.5.2.1 Description

This element type is used to identify the notes.

5.5.2.2 Content model

Note shall not contain footnotes.

5.5.2.3 Attributes

The attribute "NUMBER" controls the numbering of a note. The attribute "STATUS" has fixed value "NORMATIVE". That means that this element is always normative.

5.5.2.4 Usage guidelines

A note is attached to the some part of a document, either to a displayed component like paragraph, or to a subdivision. In the first case the note shall be inside the paragraph. In the second case, the note shall be the last "child" in the subdivision.

5.5.3 Example (<XMP>)

5.5.3.1 Description

This element type is used to identify examples.

5.5.3.2 Content model

This element may contain a running text and another display components.

5.5.3.3 Attributes

The attribute "NUMBER" controls the numbering of an example.

5.5.4 Manually formatted text (<MANFMT>)

5.5.4.1 Description

This element type is used to identify a displayed component with "manually formatted text" such as a computer source, listing, etc.

5.5.4.2 Usage guidelines

It is recommended to use proper entities to put nonbreakable spaces and the line breaks inside a text to achieve the desired formatting.

5.5.5 Warnings, cautions and remarks (<WARNING>)

5.5.5.1 Description

This element type is used to identify the display components with warnings, cautions, remarks, etc. to draw readers' attention for a particular text. The reasons may be different - precautions, security, etc. which are distinguished by an attribute "TYPE".

5.5.5.2 Content model

This element may contain a running text and another display components.

5.5.5.3 Attributes

The attribute "TYPE" has the several values for the different presentations.

5.5.5.4 Usage guidelines

Actually such warnings are attached to some piece of a document, e.g. a subdivision (if they are outside a displayed component), or, even, the entire document (general warning in the beginning of the body of the document).

5.5.6 Ordered and unordered lists (<OL> and <UL>)

5.5.6.1 Description

These element types are used to identify two traditional lists.

5.5.6.2 Content model

The list consists of a mixture of the list items and list paragraphs.

5.5.6.3 Attributes

The attribute "FORMAT" controls different presentations of lists. For <OL>:

alpha items are enumerated by lower case Latin characters;

arabic items are enumerated by Arabic digits;

roman items are enumerated by roman digits;

auto automatic selection of the enumeration method.

For <UL>:

bullet items are prefixed by bullet symbol;

emdash items are prefixed by emdash symbol;

sl items are not prefixed;

auto automatic selection of prefix.

5.5.6.4 Usage guidelines

The lists may be nested up to four levels.

5.5.6.5 Examples

EXAMPLE The following markup

<OL> <LI>the x-orientation ...; <LI>the x-nominal surface stress; <LP>but not on: <LI>the y-orientation ...; <LI>the y-nominal surface stress; </OL>

resulting is

a) the x-orientation ...;
b) the x-nominal surface stress;
but not on:
c) the y-orientation ...;
d) the y-nominal surface stress;

5.5.7 List item (<LI>)

5.5.7.1 Description

This element type is used to identify the individual items within ordered and unordered lists.

5.5.7.2 Content model

This element may contain a running text and another display components.

5.5.8 List paragraph (<LP>)

5.5.8.1 Description

This element type is used to identify the paragraph which breaks the lists.

5.5.8.2 Content model

This element may contain a running text and another display components.

5.5.9 Description list (<DL>)

5.5.9.1 Description

This element type is used to identify the description list which is a list of pairs of a term and a definition.

5.5.9.2 Content model

This element contains only description list entries.

5.5.9.3 Attributes

The attribute "FORMAT" controls different presentations of list:

ol presentation simulates an ordered or unordered list;

varl presentation simulates a old variation list;

syml presentation simulates a old symbols list;

auto default presentation.

5.5.9.4 Usage guidelines

The description list can mimic complex cases of the ordered list. The interruption of ordered list may be more com- plex and the part of the list could be repeated several types (so-called "branching").

5.5.9.5 Examples

EXAMPLE 1

<DL format=auto> <DLENTRY> <DT>TeX</DT> <DD> The batch typesetting system developed by Prof. D. Knuth. The batch typesetting system developed by Prof. D. Knuth. The batch typesetting system developed by Prof. D. Knuth. </DD> </DLENTRY> <DLENTRY> <DT>DCF</DT> <DD> The batch typesetting system from IBM. The batch typesetting system from IBM. The batch typesetting system from IBM. The batch typesetting system from IBM. </DD> </DLENTRY> </DL>

resulting in

Tex The batch typesetting system developed by Prof. D. Knuth. The batch typesetting system developed by Prof. D. Knuth. The batch typesetting system developed by Prof. D. Knuth.
DCF  The batch typesetting system from IBM. The batch typesetting system from IBM. The batch typesetting system from IBM. The batch typesetting system from IBM.

EXAMPLE 2   See ISO 75-1:1993, clause 11:

<DL format=ol> <DLENTRY><DT>h)</DT><DD>The orientation ...;</DD></DLENTRY> <DLENTRY><DT>i)</DT><DD>The nominal surface stress;</DD></DLENTRY> </DL>

resulting in

h) The orientation ...;
i) The nominal stress;

EXAMPLE 3   See ISO 6721-2:1994(E), page 7:

<DL format=ol> <DLENTRY><DT>a)</DT><DD>reference to this part ...</DD></DLENTRY> <DLENTRY><DT>b) to m)</DT><DD>see ISO 6721-1:1994, clause 12;</DD></DLENTRY> <DLENTRY><DT>n)</DT><DD>if a fixed ...</DD></DLENTRY>

resulting in

a) reference to this part ...
b) to m) see ISO 6721-1:1994, clause 12;
n) if a fixed ...

5.5.10 Description list entry (<DLENTRY>)

5.5.10.1 Description

This element type is used to identify an entry in the description list. This is just a container.

5.5.10.2 Content model

This element contains a pair of a term and a definition.

5.5.10.3 Usage guidelines

This element may appear only in the description list.

5.5.11 Description list term (<DT>)

5.5.11.1 Description

This element type is used to identify a term inside description list entry.

5.5.11.2 Content model

This element contains simple text.

5.5.12 Description list definition (<DD>)

5.5.12.1 Description

This element type is used to identify definition inside description list entry.

5.5.12.2 Content model

This element contains running text or others display components.

5.5.13 Bibliography list (<BL>)

5.5.13.1 Description

This element type is used to identify the bibliography list.

5.5.13.2 Content model

This element contains only bibliographical entries.

5.5.13.3 Usage guidelines

This element should appear only in the bibliography.

5.5.14 Bibliography list entry (<BLENTRY>)

5.5.14.1 Description

This element type is used to identify an entry in the bibliographical list. This is just a container.

5.5.14.2 Content model

This element contains only references on external documents.

5.5.14.3 Usage guidelines

This element may appear only in the bibliography list.

5.5.15 Reference list (<RL>)

5.5.15.1 Description

This element type is used to identify the list of normative references.

5.5.15.2 Content model

Only several entries are allowed inside this element type.

5.5.15.3 Usage guidelines

This element should appear only in the clause for normative references (see 5.4.8).

5.5.16 Reference list entry (<RLENTRY>)

5.5.16.1 Description

This element type is used to identify an entry in the reference list. This is just a container.

5.5.16.2 Content model

This element contains only references on external documents.

5.5.16.3 Usage guidelines

This element may appear only in the reference list.

5.5.16.4 Examples

EXAMPLE   The reference list.

<REFS><HT>Normative references</HT> <P>Bla-bla-bla</P> <RL> <RLENTRY> <EXTDOC REFID="r1"><XP REFID="r1.e" GTEXT="ISO 8402:1994" FORMAT="isoref"></EXTDOC> <TAIL>.</TAIL> </RLENTRY> <RLENTRY> <BIBLOC>ISO/IEC DIrectives, Part&nbsp;3, 1997</BIBLOC> <TAIL>.</TAIL> </RLENTRY> </RL> </REFS>

5.6 Terminology

5.6.1 Terminology list (<TL>)

5.6.1.1 Description

This element type is used to identify the terminology list. This element type is a simplified version of similar element type to be used for terminological standards. This element type follows ISO 10241:1992.

Terminology list is the set of concepts. The concepts may be organized in the different ways. There are types of relationships between concepts: hierarchy (a concept contains one or many subcontracts) and grouping (many concepts have are grouped with one title). These two type of relationships may be intermixed. So, on each level of hierarchy we can find a mixture of single concepts (element types <C1>, <C2>, <C3>, <C4> and <C5>) and groups of concepts (element types <CC1>, <CC2>, <CC3>, <CC4> and <CC5>).

5.6.1.2 Content model

This element contains several concepts (element type <C1>) or several concept groups (element type <CC1>).

5.6.1.3 Usage guidelines

This element may appear inside element <DEFS> (special clause for definitions), in a clause or in an annex.

5.6.1.4 Presentation

Historically, the terminology list "shares" numbering with subdivisions of text. To avoid the duplication of numbers, we need to restrict the use of <TL>. A numbered subdivision of text can contain either deeper subdivisions or a terminology list.

The heading of subdivisions and terms now have the different presentations. This allows to avoid confusion between them.

5.6.1.5 Examples

EXAMPLE 1   The terminology list without subdivision.

<DEFS><HT>Definitions</HT> <P>Bla-bla-bla</P> <TL> <C1> <TERMDEF>first term</> <TERMDES>explanation for first term</> </C1> <C1> <TERMDEF>second term second term <TERMDES>explanation for second term</> </C1> </TL> </DEFS>

For the real example, see Annex A and Annex B which contain markup and presentation of the terminology for ISO/ IEC Directives, part 3, 1997.

5.6.2 Terminology concepts (<C1>,<C2>, <C3>, <C4> and <C5>)

5.6.2.1 Description

This element type is used to identify a concept on the different level of hierarchy.

5.6.2.2 Content model

Each such element type contains one or several terms, their description (optionally) and deeper single concepts or concept groups.

5.6.3 Terminology concept groups (<CC1>,<CC2>, <CC3>, <CC4> and <CC5>)

5.6.3.1 Description

This element type is used to identify a group of concepts under the same title on the different level of hierarchy.

5.6.3.2 Content model

Each such element type contains group title, text (optionally) and deeper concepts or concept groups.

5.6.4 Term description (<TERMDEF>)

5.6.4.1 Description

This element type is used to identify a term within the terminology list entry.

5.6.4.2 Content model

This element contains a mixture a running text and simple inline components.

5.6.4.3 Usage guidelines

This element may appear only in the concept.

5.6.5 Term description (<TERMDES>)

5.6.5.1 Description

This element type is used to identify a description of a term within the concept.

5.6.5.2 Content model

This element contains a mixture a running text, inline and displayed components.

5.6.5.3 Usage guidelines

This element may appear only in the concept.

5.7 Inline components

5.7.1 Highlighted phrase (<HP>)

5.7.1.1 Description

This element type is used to identify the phrases which are highlighted by different typographical presentations.

5.7.1.2 Content model

This element may contain a running text and all inline components.

5.7.1.3 Attributes

The attribute "FORMAT" specifies the following presentations:

none presentation as for running text;

bold presentation for the bold text;

italic presentation for the italic text;

boldit presentation for the bold italic text;

uline presentation for the underlined text;

oline presentation for the overlined text;

code presentation for the proportional text;

5.7.2 Term (<TERM>)

5.7.2.1 Description

This element type is used to identify a term.

5.7.2.2 Content model

This element may contain a raw text.

5.7.2.3 Attributes

The attribute "LANG" specifies the language of the term, e.g. Latin for biological terms.

5.7.2.4 Usage guidelines

This element may appear in the running text.

5.7.3 Internal cross-references (<XREF>)

5.7.3.1 Description

This element type is used to generate the internal (i.e. within a document) cross-reference such as "see table A.1". From the different possibilities what may be a generated text, e.g. just "A.1" or "table A.1", the shortest form has been chosen.

5.7.3.2 Content model

This element is empty, because it is considered that a cross-reference will be generated by the authoring or publishing system.

5.7.3.3 Attributes

The attribute "REFID" contains an ID of the element to be referenced. Some variations in the presentation are managed by the attribute "FORMAT". The attribute "GTEXT" contains the text generated by the publishing system.

5.7.3.4 Usage guidelines

It was decided to implement this element type as the HyTime architectural form "clink" (contextual link). It is very difficult to create HyTime-compliant document - "only computer will like to write HyTime documents." Right now, there is no publishing or authoring SGML-based system which can work in this way. But, there is document delivery software which can handle HyTime (e.g. SoftQuad Explorer, Panorama and EBT DynaText soon). Nevertheless, HyTime constructs in our case are more or less simple.

5.7.3.5 Examples

EXAMPLE 1   An internal reference on a table:

... see table <xref refid=tbl1 gtext="A.1">...

EXAMPLE 2   To reference on the several elements we need to use indirect addressing via the architectural form "nameloc" which contains the IDs of all referenced elements, e.g. an internal reference on tables:

... see tables <xref refid=tables1 gtext="A.2-A.5"> ... ... <links> <nameloc id=tables1> <nmlist nametype=element>tbl2 tbl3 tbl4 tbl5</nmlist> </nameloc> </links>

5.7.4 Graphics (<ARTWORK>)

5.7.4.1 Description

This element type is used to insert external graphic file into the document. The external file is described as an exter- nal entity with the public identifier.

5.7.4.2 Content model

It is empty element.

5.7.4.3 Attributes

The attribute "NAME" specifies the entity name. The attribute "POSITION" specifies the position of the graphic relative to the insertion point. With attribute value "INLINE", the left lower corner of the graphic is to be placed at the insertion point. With attribute value "BELOW", the top edge of the graphic is to be placed below the insertion point.

5.7.4.4 Usage guidelines

The graphics may be used to mimic an unusual character inside a running text and as a figure without title.

The commonly agreed notations should be used to specify graphic formats, for example:

<!NOTATION cgmchar PUBLIC "+//ISO 8632-2:1987//NOTATION Character encoding//EN"> <!NOTATION cgmclear PUBLIC "+//ISO 8632-4:1987//NOTATION Cleartext encoding//EN"> <!NOTATION iges PUBLIC "-//NBS IR 88-3813//NOTATION IGES//EN"> <!NOTATION spdl PUBLIC "+//ISO/IEC 10180:1994//NOTATION SPDL//EN"> <!NOTATION eps PUBLIC "+//ISBN 0-201-18127-4//NOTATION EPS//EN"> <!NOTATION epsi PUBLIC "+//ISBN 0-201-18127-4//NOTATION EPSI//EN"> <!NOTATION ccitt4 PUBLIC "-//CCITT Group 4//NOTATION CCITT4//EN"> <!NOTATION tiff PUBLIC "-//Aldus/Microsoft//NOTATION TIFF//EN">

5.7.4.5 Examples

EXAMPLE 1   Insert a file in encapsulated PostScript format is:

<!entity fig1 PUBLIC "-//ISO/CS//NONSGML d01327af//FR" NDATA EPS> ... <artwork name=fig1 place=below>

EXAMPLE 2   Insert a file

<artwork name=fig2 place=inline>

EXAMPLE 3   Insert a file

<artwork name=fig2 place=below>

5.7.5 Footnote (<FN>)

5.7.5.1 Description

This element type is used to identify a footnote. It is allowed only in running text, because it produces a footnote reference (i.e. a marker) which should be attach to something. A footnote is informative (as opposite to normative) component of a standard.

5.7.5.2 Content model

Footnote may contain a mixture of the running text and another displayed elements except notes and footnotes.

5.7.5.3 Attributes

The attribute "STATUS" has fixed value "INFORMATIVE".

5.7.5.4 Usage guidelines

But footnotes inside tables (or table notes) and figures (or figure notes) are differ. The use of footnotes in figures and tables will be discussed later.

5.8 Referential components

5.8.1 General considerations

In the DTD we want handle carefully the references on external documents to provide good input to the on-line hypertextual systems. All external documents (in the most cases normative documents) are given with their titles and publication dates either in "Normative references" clause or in the informative annex "Bibliography" (in this case we consider the reference as external). In the text such documents are indicated by their reference number only (in this case we consider the reference as internal). Such separation allows impose some control. To refer to another external documents we can use a bibliographical reference.

5.8.2 Bibliographical reference on an external document (<BIBDOC>)

5.8.2.1 Description

This element type is used to specify the bibliographical reference on an external document. Such a reference is just a text with a document title, etc.

5.8.2.2 Content model

Just a running text with highlighted phrases.

5.8.2.3 Usage guidelines

This element may be used in reference and bibliographical entries as well as in the running text.

5.8.3 Reference on an external document (<EXTDOC>)

5.8.3.1 Description

This element type is the hypertextual reference to an external document as entire. A reference may be represented by some text, which may be generated from in-house database. Actually the problem is focused on public identifiers for all our documents.

5.8.3.2 Content model

Just a running text with highlighted phrases.

5.8.3.3 Usage guidelines

This element type is the HyTime contextual link (architectural form "clink"). The attribute "REFID" is always the indirect reference (i.e. via the name location architectural form "nameloc").

5.8.3.4 Examples

EXAMPLE 1   The element <EXTDOC> always refers to an element <NAMELOC> which must contain an external entity.

<!ENTITY std8879 PUBLIC "+//ISO 8879:1986//DOCUMENT //EN" CDATA SGML> ... ... <extdoc ref=x8879>ISO&nbsp;8879:1986, ...</extdoc> <links> <nameloc id=x8879> <nmlist nametype=entity>std8879</nmlist> </nameloc> </links>

Results in: "... ISO 8879: 1986, Information processing - Text and office systems - Standard Generalized Markup Language (SGML) ..."

EXAMPLE 2   The reference to the multi-part standard as a whole should mention all its parts. In the following example the last element <NAMELOC> serves for such a reference. This element contains all IDs of the elements <EXTDOC> and defines so-called aggregated location. In such a way the element <XREF> points simultaneously on the several elements <EXTDOC>.

<!ENTITY std9573.1 PUBLIC "+//ISO/IEC TR 9573-1:1992//DOCUMENT //EN" CDATA SGML> ... <!ENTITY std9573.15 PUBLIC ...> ... <refs><ht>Normative references</ht> <rl> <rlentry><extdoc id=e9573.1 ref=x9573.1> ...</rlentry> ... <rlentry><extdoc id=e9573.15 ref=x9573.15> ...</rlentry> </rl></refs> ... see <xref ref=x9573>ISO/IEC TR 9573</> for details ... ... <links> <nameloc id=x9573.1><nmlist entity>std9573.1</nmlist></nameloc> ... <nameloc id=x9573.15><nmlist entity>std9573.15</nmlist></nameloc> <nameloc id=x9573 aggloc> <nmlist element>e9573.1 ... e9573.15</nmlist> </nameloc> </links>

EXAMPLE 3   A reference to particular elements of an external document, e.g. "conformément à 3.1.1 de l'ISO 1234:1984" is more complicated. The element <NAMELOC ID=x1234> defines the reference to the external document and the element <EXTDOC> uses this reference. The element <NAMELOC ID=y1234> defines the reference to particular element on this external document. The element <NAMELOC ID=z1234> defines the aggregated location which consists of the previous element <NAMELOC> and the element <EXTDOC>. The element <XREF> uses the last element <NAMELOC> to point simultaneously to the external document as a whole and to the particular element of this external document. This is a possible way to guarantee that a referenced external document is "mentioned" via an element <EXTDOC>.

<!ENTITY std1234 PUBLIC "ISO 1234:1984//DOCUMENT //FR" CDATA SGML> ... conform&eacute;ment &agrave; <xref ref=z1234>3.1.1 de l'ISO 1234:1984</xref> ... <blentry><extdoc id=e1234 ref=x1234>ISO 1234:1984, ....</extdoc></blentry> ... <links> <nameloc id=x1234> <nmlist nametype=entity>std1234</nmlist> </nameloc> <nameloc id=y1234> <nmlist nametype=element docorsub=std1234>a331</nmlist> </nameloc> <nameloc id=z1234 aggloc> <nmlist nametype=element>e1234 y1234</nmlist> </nmlist> </links>

5.9 Float components

5.9.1 Index entry (<IX>)

5.9.1.1 Description

This element type is used to identify an index entry which is attached to some place of a text.

5.9.1.2 Content model

Only a raw text.

5.9.1.3 Usage guidelines

We hope that the index entries will be generated by an authoring or publishing system. Sometimes index entries may be complex to support multilevel indexes, etc. But we decided to consider them as text, for now.

5.9.2 Figure (<FIGURE>)

5.9.2.1 Description

We would like to keep figures as simple as possible. Although ISO/IEC Directives, part 3 do allow logical grouping of figures (only two levels). For example, figures from ISO 10059-1:1992 are not implementable.

   drawing    drawing
a) aaaaaa b) bbbbbbbb
Figure 4 - Bla-bla-bla

Also it is not possible to do physical grouping of figures, i.e. put them together with proper alignment.

5.9.2.2 Content model

The element contains a title and a body (i.e. the rest).

5.9.3 Figure body (<FIGBODY>)

5.9.3.1 Description

This element type is used as container for a figure except its title. As a rule it contains drawing and some text which annotates this drawing.

5.9.3.2 Content model

The element contains a mixture of the running text, inline and displayed components except notes and footnotes.

5.9.4 Figure title (<FIGTITLE>)

5.9.4.1 Description

This element type is used to identify title of a figure.

5.9.4.2 Content model

The element contains a mixture of the running text and inline, except notes and footnotes.

5.9.5 Figure note (<FIGNOTE>)

5.9.5.1 Description

This element type is used to identify footnotes inside a figure to annotate a drawing. Such footnotes (actually, figure notes) are special because they contain the normative information while the ordinary footnotes contain informative information.

5.9.5.2 Content model

The element contains a mixture of the running text, inline and displayed components except notes and footnotes.

5.9.5.3 Usage guidelines

Markers shall appear on the drawing and in the beginning of a figure note. These markers can be the part of the drawing or may be attach to the drawing as annotations. In the first case we need to guarantee that we can use the same marker (e.g. a number in the circle) in the drawing and in the text. In the second case we meet with overlaying components one of them should be described in SGML.

5.9.6 Table (<TABLE>)

5.9.6.1 Description

As simple as possible with CALS tables. One can find their definition in MIL-M-28001B (26 June 1993). This document is available on several FTP sites. The content model for cells allows figures within tables.

<!ENTITY% m.entry "#PCDATA|%inline;|p|%list;|%df;|fig|tabnote">

5.9.6.2 Content model

The element contains a title, table header (optional), table body, and table footer (optional). This content model is simplified CALS model for tables.

5.9.7 Table title (<TABTITLE>)

5.9.7.1 Description

This element type is used to identify a title of table.

5.9.7.2 Content model

The element contains a mixture of the running text and inline, except notes and footnotes.

5.9.8 Table note (<TABNOTE>)

5.9.8.1 Description

This element type is used to identify footnotes inside a table. Such footnotes (actually, table notes) are useful to attach more text to a cell. They contain the normative information while the ordinary footnotes contain informative information.

5.9.8.2 Content model

The element contains a mixture of the running text, inline and displayed components except notes and footnotes.

5.10 Very specific components

5.10.1 Formulae (<FORMULA> and <DFORMULA>)

5.10.1.1 Description

These element types are used to identify the mathematic formulae.

5.10.1.2 Content model

We decided to use SGML markup for formulae. It was agreed to adopt DTD fragment for mathematics from ISO 12083:1994 as a replacement for the currently used mathematics described in ISO/IEC TR 9573-11:1992.

5.10.2 Tolerance (<TOL>)

5.10.2.1 Description

This element type is used to identify the tolerances. There is no yet a subDTD to markup all possible tolerances as presented in the ISO/IEC Directives, Part 3.The examples below are just a proposal.

5.10.2.2 Retrieval aspects

Of course, such markup is pretty awful, but we are not going to reuse these tolerances in other applications.

5.10.2.3 Examples

The examples are in the following table.

Table 3 — Examples for tolerance markup
Result <TOL>markup</TOL>
6,3 mm 12,5 % 6,3 mm <symdev>12,5 %</symdev>
6,3 × (1 12,5 %) mm 6,3 &times; (1 <symdev>12,5 %</symdev>) mm
(30 ± 1,5) mm (30 <symdev>1,5</symdev>) mm
3 mm+0,2 mm -15 % 3 mm <uppdev>+0,2 mm</uppdev><lowdev>-15 %</lowdev>

5.10.3 Chemistry (<CHEM>)

5.10.3.1 Description

Chemistry shall be processed as formulae.

5.10.3.2 Examples

EXAMPLE 1

<roman>H</roman><sub>2</sub><roman>O</roman>

EXAMPLE 2

<fence type=none><fence type=none> <roman>H</><sub>2</><sup>+</></fence> <sup pos=pre>14</><sub pos=pre>7</></fence><sup>*</>

EXAMPLE 3

<pile><above1><roman>H</><sub>2</><roman>O</><above>(solid)</pile>

EXAMPLE 4

<roman>Q</>&lrarr;<roman>S</>&rarr;<roman>T</>&larr;

5.10.4 Designators (<DESIGN>)

5.10.4.1 Description

For designation of internationally standardized items, please, see ISO/IEC Directives, Part 2. Generally, a designation (element type <DESIGN>) consists of a description (textual?), International Standard Number Block and one or more Data Blocks. The current definition of the designation system forces to make a presentational model, e.g. the number of a relevant part of Standard shall be indicated in Data Block, while the number of standard shall be put in International Standard Number Block. The proposed content model joins this information in the element type <EXTDOC> to allow to reference on the standard. But the visual result is the same.

5.10.4.2 Usage guidelines

Individual Data Block can be "linked" to their descriptions, if any.

5.10.4.3 Presentation

See the markup of the example E.7.1 from the Directives, Part 2.

5.10.4.4 Examples

EXAMPLE

<P>... main scale 58 %deg;C to 82 &deg;C : <UL FORMAT=SL> <LI><DESIGN><DESCR>Thermometer </> <EXTDOC REF=x656>ISO 656</EXTDOC> <SEP><DATABL>EC</DATABL> <SEP><DATABL>0,2</DATABL> <SEP><DATABL>58-82</DATABL> </DESIGN></LI> </UL> </P> <P>In this designation the elements have the following meaning: <DL FORMAT=UL> <DT>EC</DT><DD>&mdash; short enclosed-scale thermometer;</DD> <DT>0,2</DT><DD>&mdash; gradiation interval = 0,2 &deg;C;</DD> <DT>58-82</DT><DD>&mdash; the range of the main scale is from 58 &deg;C to 82 &deg;C</ DD> </DL> </P> <NOTE> In this designation the letters "EC" could be ommited because <EXTDOC REF=x656>ISO 656</EXTDOC> refers only to short enclised-scalse thermometers.</NOTE>

5.11 Possible extensions of the DTD

5.11.1 Text block (<TEXTBLK>)

There is a need for text block displayed component to cover some exotic cases, e.g. long quotation.

5.11.2 Modification of element types for formulae component

It is proposed to add attribute(s) to keep the graphical presentation(s) of a formulae.

5.11.3 Modification of element types for figure component

It is proposed to define the figure body as a table.

6. Profile

6.1 Introduction

In the ITSIG exchange DTD for Standards the bibliographical, monitoring, and other information about a document (i.e. metadata) must be attached to the document instance. Roughly speaking, it is catalogue-like description of a document. In standard development business such information appear in the several types of applications:

  • electronic publishing of Standards;
  • project monitoring databases (PMDB);
  • electronic information services like PERINORM or ISO Online;
  • catalogues production.

As a rule, this information resides in a particular PMDB and is requested for others PMDBs and applications. New ISONET manual describes more that hundred fields which may be potentially exchanged. The ISONET manual gives two representation - conventional and SGML. The least can be used in ITSIG exchanged DTD to encode metadata. Historically, we call document's metadata as "profile".

This article describes the implementation of profile in the SGML project. As it was decided on the SGML group meeting on December 1997, we have to progress with the use of new ISONET manual for exchange of metadata. At regional and national SDOs there are procedures when an International Standard is endorsed as their standard. It is very important that profile of International Standard would be easily reused by Member bodies' SGML-based production system.

6.2 Architecture

6.2.1 General considerations

We already understood, that it is not convenient to use the same profile in the different applications. For example, ISO reference number is usually presented as "ISO 1234-1:1994", while for SGML publishing system it should be encoded as "ISO&nbsp;1234-1&thinsp;:&thinsp;1994". Another example, special procedure as fast-track is a just a flag in PMDB, but it is a particular boilerplate text to be inserted on the cover page for publishing system.

We separate profile extracted from databases (database-oriented), which we have to encode with conformance with new ISONET manual and profile to be used by publishing system (document-oriented) which should be convenient for publishing needs. Easy extensibility of profile should be taken into account in the implementation.

It is important to emphasize that only database-oriented profile should be used for interchange of data between the different organizations involved. Document-oriented profile is internal choice of each organization. Of course, it may be coincident with database-oriented profile in the simple cases.

6.2.2 Database-oriented profile

In the example of database-oriented profile only four groups are used (see clause A.1 for the DTD):

00   data elements for the file label;

10   data elements for projects;

20   data elements for products (documents in our case);

40   data elements for committee information.

EXAMPLE 1

<ISONET> <E00> <E00.003><DATE>1999-01-13</DATE></E00.003> <E00.006><ORG.ID>A000xx</ORG.ID></E00.006> </E00> <E10> <E10.001><REC.ID>A000xx:10:016543</REC.ID></E10.001> <E10.202><ORG.ID>ISO</ORG.ID></E10.202> <E10.204><COMM.ID>ISO/TC 176/SC 3</COMM.ID></E10.204> <E10.300><HSTAGE>6060</HSTAGE></E10.300> <E10.310><DATE>1998-01-01</DATE></E10.310> </E10> <E20> <E20.001><REC.ID>A000xx:20:016543</REC.ID></E20.001> <E20.104> <REFNUM><CODE>ISO</CODE> <INT>9000</INT>-<CODE>1</CODE>:<INT>1994</INT></REFNUM> </E20.104> <E20.200> <TITLE LANG=EN> <COMP>xxx</COMP> -- <COMP>xxx</COMP> -- Part 1: <COMP>xxx</COMP> </TITLE> <TITLE LANG=FR> <COMP>yyy</COMP> -- <COMP>yyy</COMP> -- Partie 1: <COMP>yyy</COMP> </TITLE> </E20.200> <E20.208><LANG>EN</LANG></E20.208> <E20.212><INT>0</INT></E20.212> <E20.216><CODE>ST</CODE></E20.216> <E20.220><INT>1</INT></E20.220> <E20.228><CODE>ZX</CODE></E20.228> <E20.310><DATE>1998-01-01</DATE></E20.310> <E20.502><ICS>10.110.10</ICS></E20.502> <E20.504><TEXT LANG=en>paints</TEXT><TEXT LANG=en>varnishes</TEXT></E20.504> <E20.700><ORG.ID>ISO</ORG.ID></E20.700> </E20> <E40> <E40.104><COMM.ID>ISO/TC 176</COMM.ID></E40.104> <E40.130><TEXT lang=en>Quality management and quality assurance</TEXT></E40.130> <E40.140><CODE>ISO/TC</CODE></E40.140> <E40.145><INT>176</INT></E40.145> <E40.150><COMM.ID>TMB</COMM.ID></E40.150> <E40.104><COMM.ID>ISO/TC 176/SC 3</COMM.ID></E40.104> <E40.130><TEXT lang=en>Supporting technologies</TEXT></E40.130> <E40.140><CODE>SC</CODE></E40.140> <E40.145><INT>3</INT></E40.145> <E40.150><COMM.ID>ISO/TC 176</COMM.ID></E40.150> </E40> </ISONET>

There are several changes to the latest edition of ISONET manual:

  • a) element TITLE (used in E20.200) is structured in the way that is mixed text and title's components; from one hand, the generation of titles becomes simple - one has to remove all tagging only; from another hand there is access to all individual components;
  • b) element REFNUM (used in E10.104) is structured also in the mixed way for the same reasons as above;
  • c) element E40.145 was added to specify the number of a committee.

As a rule, database-oriented profile contains a lot of information for the main document and just a few elements for the referred documents. An example for referred document is below:

EXAMPLE 2

<ISONET> <E00> <E00.003><DATE>1999-01-13</DATE></E00.003> <E00.006><ORG.ID>A000xx</ORG.ID></E00.006> </E00> <E10> <E10.001><REC.ID>A000xx:10:016547</REC.ID></E10.001> <E10.300><HSTAGE>6060</HSTAGE></E10.300> </E10> <E20> <E20.001><REC.ID>A000xx:20:016547</REC.ID></E20.001> <E20.104> <REFNUM><CODE>ISO</CODE> <INT>9002</INT>:<INT>1994</INT></REFNUM> </E20.104> <E20.200> <TITLE LANG=EN> <COMP>Quality systems</COMP> -- <COMP>Model for quality assurance in production, installation and servicing</COMP> </TITLE> <TITLE LANG=FR> <COMP>Syst&egrave;mes qualit&eacute;</COMP> -- <COMP>Mod&egrave;le pour l&apos;assurance de la qualit&eacute; en production, installation et prestations associ&eacute;es</COMP> </TITLE> </E20.200> <E20.208><LANG>EN</LANG><LANG>FR</LANG></E20.208> <E20.216><CODE>ST</CODE></E20.216> <E20.220><INT>1</INT></E20.220> </E20>

6.2.3 Document-oriented profile (<DOCPROF>)

Document-oriented profile contains the metadata about the document itself (i.e. the main document) and it may contain the metadata about the documents which are referred in the main document. The database-oriented profile for a particular document has to be embedded in the document-oriented profile. So, the document-oriented profile structure is look in the following way:

<PROFILE> <MAINDOC ID="r0"> <ISONET> ... -- database-profile for the main document </ISONET> <DOCPROF> ... -- document-oriented profile for the main document </DOCPROF> </MAINDOC> <REFDOC ID="r1"> <ISONET> ... database-profile for the referred document </ISONET> <DOCPROF> ... -- document-oriented profile for the referred document </DOCPROF> </REFDOC> ... more referred documents, if any </PROFILE>

At present, document-oriented profile used at ISO/CS is very simple - only three elements are required: <FIELD> to keep a single piece of information, <ISOREF> to keep references like "ISO 1234:1999 - Dummy title", and <XP> to reuse content of previous elements. A unique ID is assigned for the each element.

An example of document-oriented profile for referred document is below.

EXAMPLE 1

<DOCPROF REFID="cs016537" ID="R4" refref="ISO 9002:1994"> <FIELD ROLE="DOCTYPE" ID="R4.1">IS</FIELD> <FIELD ROLE="ORIGIN" ID="R4.2">ISO</FIELD> <FIELD ROLE="PREFIX" ID="R4.3">ISO</FIELD> <FIELD ROLE="NUMBER" ID="R4.4">9002</FIELD> <FIELD ROLE="PART" ID="R4.8">2</FIELD> <FIELD ROLE="PDATE" ID="R4.6">1994-06-30</FIELD> <FIELD ROLE="TITLE" ID="R4..M.E" LANG="E">Quality systems</FIELD> <FIELD ROLE="TITLE" ID="R4..C.E" LANG="E">Model for quality assurance in production, installation and servicing</FIELD> <FIELD ROLE="TITLE" ID="R4..M.F" LANG="F">Syst&egrave;mes qualit&eacute;</FIELD> <FIELD ROLE="TITLE" ID="R4..C.F" LANG="F">Mod&egrave;le pour l&apos;assurance de la qualit&eacute; en production, installation et prestations associ&eacute;es</FIELD> <ISOREF VARC="ISO&nbsp;9002&thinsp;:&thinsp;1994" ID="R4.E"> <xp refid="R4..M.E">&nbsp;&mdash; <xp refid="R4..C.E"> </ISOREF> <ISOREF VARC="ISO&nbsp;9002&thinsp;:&thinsp;1994" ID="R4.F"> <xp refid="R4..M.F">&nbsp;&mdash; <xp refid="R4..C.F"> </ISOREF> </DOCPROF>

Note, that now all elements have SGML unique identifier for internal references. The additional element type (<XP>) is designed for to "copy something from profile by reference". For example, to the reuse of the publication year is "... <XP TYPE=BODY REFID='R0.6.1'> ... ".

The element type (<ISOREF>) is used to define the different types of a reference on ISO Standard. The reference may be a truncated (in different ways) reference number, a title, or a combination of both. Everything is possible with the element type <ISOREF> which contains four attributes ("VARA", "VARB", etc.) for different variations of the reference number and the content with the title of the Standard (see below):

<ISOREF ROLE="ISO 10013:1995" VARA="ISO&nbsp;10013" VARB="ISO&nbsp;10013" VARC="ISO&nbsp;10013&thinsp;:&thinsp;1995" VARD="ISO&nbsp;10013&thinsp;:&thinsp;1995(E)" LANG="EN" ID="R0.E"><xp type=body refid="R0..M.E"></ISOREF>

Note in that definition, the element <XP> is already used to "copy" the title of the standard. Actually, this element can refer not only on the content of an element in profile, but attributes of an element as well. Any combination of these two options is possible also. So the reference like this "... <XP TYPE=ISOREF REFID="R0.E"> ... " produces " ... ISO 10013: 1995, Guidelines for developing quality manuals ...". Of course, this is a feature of the publishing system at the ISO/CS. In another publishing system, implicit generation of all variations may be necessary.

6.3 Boilerplate text support

ISO Standard contains many boilerplate texts in may variations. There is some logic in presentation (English or French), in boilerplate texts (JTC1 or not), etc. To provide conditional generation of a document in the SGML-based publishing system we use so-called marked section. The transformation procedure from database to document profile also generates the several parameter entities which are used for conditional processing of the document. Below is an example of a boilerplate text fragment for foreword clause:

Committee<![%TC2;[s]]> ISO/TC &R0.21;, <hp format=italic>&R0.22.E;</hp><![%SC;[, Sub- committee SC &R0.23;, <hp format=italic>&R0.24.E;</hp>]]><![%TC2;[ and ISO/TC &R0.25;, <hp format=italic>&R0.26.E;</hp>]]><![%SC2;[, Subcommittee SC &R0.27;, <hp for- mat=italic>&R0.28.E;</hp>]]><![%COLLAB;[ in collaboration with &R0.32.E;]]>.</P>

6.4 Conclusions

The separation of profile into database-oriented and document-oriented has the following advantages:

  • a) database-oriented profile is based on the agreed format, i.e. ISONET manual, and
  • b) implementation of document-oriented profile is internal choice of an organization.

7. Master entity dictionary

7.1 General

The base DTD contains the several groups of parameter entities to allow some modifications of the base DTD. Some entities are intended for internal organization of the base DTD. The derived DTD is usually defined as some modifications of the parameter entities, the base DTD and additional element types.

7.2 Overall structure

7.2.1 Parameter entity std.name

The parameter entity std.name is the general identifier (i.e. name) of the top element type in the base DTD.

7.2.2 Parameter entity std.model

The parameter entity std.model is the content model for the top element type in the base DTD.

7.2.3 Parameter entity body.model

The parameter entity body.model is the content model for the element type <BODY>.

7.2.4 Parameter entity std.profile

The parameter entity std.profile is the complete definition of the element type <PROFILE>.

7.2.5 Parameter entity std.links

The parameter entity std.web is the complete definition of the element type <LINKS>.

7.2.6 Parameter entity std.entity

The parameter entity std.entity is the definition of all character entities used in base DTD. Two set of character entities are predefined. Each of them contains several hundreds of character entities. The first set is based on ISO 8879:1986 and it has the public id "-///ISO/CS//DTD std::entity:8879//EN". The second set is based on ISO/IEC TR 9573 and has the public id "-//ISO/CS//DTD std::entity:9573//EN".

7.3 Base and local groups

7.3.1 General approach for local modifications

The base DTD uses the several groups (display, inline, include and float) of element types. Each group has base part, which is the default definition, and the local part, which is local addition. The combination of these two parts is used in the derived DTD.

7.3.2 Parameter entity base.list

The parameter entity base.list contains the element types for general list components.

7.3.3 Parameter entity base.note

The parameter entity base.note contains the element types for note components.

7.3.4 Parameter entity base.xmp

The parameter entity base.xmp contains the element types for example components.

7.3.5 Parameter entities base.display, local.display, and display

The parameter entities base.display, local.display, and display are, respectively, base, local, and combined definitions of the group of element types for display components.

7.3.6 Parameter entities base.inline, local.inline, and inline

The parameter entities base.inline, local.inline, and inline are, respectively, base, local, and combined definitions of the group of element types for inline components.

7.3.7 Parameter entities base.float, local.float, and float

The parameter entities base.float, local.float, and float are, respectively, base, local, and combined definitions of the group of element types for float components.

7.3.8 Parameter entities base.include, local.include, and include

The parameter entities base.include, local.include, and include are, respectively, base, local, and combined definitions of the group of element types for include components.

7.4 Content models

7.4.1 Parameter entity m.ph

The parameter entity m.ph is the content model of "phrase". It is used for inline components.

7.4.2 Parameter entity m.par

The parameter entity m.par is the content model of "paragraph". It is used for display components.

7.4.3 Parameter entity m.pseq

The parameter entity m.pseq is the content model of "sequence of paragraphs". It is used for containers.

7.4.4 Parameter entity m.entry

The parameter entity m.entry is the content model of "table cell". It is used in table subDTD.

7.5 Attributes modification

7.5.1 Parameter entity std.page

The parameter entity std.page may be use to add attributes to the element types: <BODY>, <ANNEXN>, <ANNEXI>, and <ANNEXBL>. Usually, an attribute for the page layout is added.

7.5.2 Parameter entity std.xref

The parameter entity std.xref may be use to add an attribute to the element type <XREF>. Usually, an attribute for the cross-reference format is added.

7.6 Modification of formulae component

7.6.1 Parameter entities base.df and base.f

The parameter entities base.df and base.f are used to specify the names of displayed and inline, respectively, element types for formulae component.

7.6.2 Parameter entity std.math

The parameter entity std.math is the definition of the formulae component.

7.6.3 Default definition of formulae component

The default definition of formulae component contains two text-only element types: <DFORMULA> and <FORMULA>.

7.6.4 Use of ISO 12083:1995 for formulae component

The mathematic subDTD from ISO 12083:1995 has public id "-//ISO/CS//DTD m12083//EN". To use this subDTD, the derived DTD should define the entity std.math, for example:

<!-- derived DTD --> <!entity % std.math PUBLIC "-//ISO/CS//DTD m12083//EN" > <!entity % basedtd PUBLIC "-//ISO/CS//DTD dtd::base::0.93//EN" > %basedtd; <!-- insert base DTD -->

7.7 Modification of figure component

7.7.1 Parameter entities fig.model, fig.include and fig.exclude

The parameter entities fig.model, fig.include, and fig.exclude are used to specify the content model, in-clusion, and exclusions, respectively, of element type <FIGURE> for figure component.

7.7.2 Parameter entity fig.title

The parameter entity fig.title is the name of the element for figure title.

7.7.3 Default definition of figure component

The default definition of figure component is the following:

<!entity % fig.body "figbody" > <!entity % fig.title "figtitle" > <!entity % fig.model "%fig.title;? & %fig.body;" > <!entity % fig.exclude "-(%float;)" > <!entity % fig.include "" > <!element figure - - (%fig.model;) %fig.exclude; %fig.include; > <!element %fig.body; - - (%m.par;|p|fignote)+ > <!element %fig.title; - - (%m.ph;)* > <!attlist %fig.title; id %ID; #IMPLIED gtext CDATA #IMPLIED >

7.8 Modification of table component

7.8.1 Parameter entities tab.model, tab.include, and tab.exclude

The parameter entities tab.model, tab.include, and tab.exclude are used to specify the content model, in-clusion, and exclusions, respectively, of element type <TABLE> for table component.

7.8.2 Parameter entity tab.title

The parameter entity tab.title is the name of the element for table title.

7.8.3 Default definition of table component

The default definition of table component is based on CALS subDTD for tables. This subDTD has public identifier "-/ /USA-DOD//DTD MIL-M-28001B/table//EN".

8. Derivation of DTDs from the base DTD

To simplify the maintenance of the several very close DTDs, most of them are implemented as a derivation from one base DTD. Using the base part and local part of the base DTD, derivation of DTDs can be carried out.

9. Authoring DTDs

9.1 Authoring DTD for native SGML tools

Authoring DTD for SGML native tools is a simplified version of the base DTD. The following simplification is pro- posed: less number of tags, no formulae, no exotic element types.

9.2 Authoring DTD for word processors

Another authoring DTD is designed for use with word processors which can save a document in SGML format (e.g. SGML Author for Word by Microsoft). Such a DTD is a simplified twice. At the first, the number of element type is reduced to simplify the authoring. At the second, the structure is flatten, i.e. an element type for display component may not contain another element type for display component. Thus a paragraph may not contain a note. This simplification reflects the current functionalities of word processors. Another simplification is avoiding the nesting. Instead of general element type for nested list (ordered or unordered), four element types are introduced: list level1, list level 2, etc.

9.3 Use of HTML 3.2 for standards development

The current complexity of HTML is enough to use it for presentation of standards. The implementation (i.e. mapping) of the base DTD into HTML 3.2 has to be defined.

10. DTD for terminological standards

Take into account ISO/DIS 12200 and ISO 10241:1992 although they contain ambiguities and drawbacks. Automatic separation of a multilingual version into monolingual versions.

11. DTD for multilingual standards

We need to create a DTD for multilingual standards.

Automatic merging of monolingual versions into a single multilingual version.

NOTE: Also it may be common part, e.g. illustrations.

Exactly the same SGML structure for each monolingual part (upto which level of details).

The exceptions for the previous requirement should be allowed.

Presentation requirements may affect the DTD.

12. All public entities

The public entities used in the set of ISO DTDs for standard are given in the following table.

Table 4 — The public entities used in the set of ISO DTDs
Public Id Comment
-//ISO/CS//DTD std::entity::8879//EN All character entries in accordance with ISO 8879:1986
-//ISO/CS//DTD std::entity::9573//EN All characters entities in accordance with ISO/ IEC TR 9573
-//ISO/CS//DTD std::in::92//EN ISO/CS publishing DTD, version 0.92
-//ISO/CS//DTD std::base::92//EN Base DTD, version 0.92
-//ISO/CS//DTD std::exchange::92//EN ITSIG exchange DTD, version 0.92
-//ISO/CS//DTD std::in::93//EN ISO/CS publishing DTD, version 0.93
-//ISO/CS//DTD std::base::92//EN Base DTD, version 0.93
-//ISO/CS//DTD std::exchange::93//EN ITSIG exchange DTD, version 0.93
-//ISO/CS//DTD m12083//EN Mathematics subDTD from ISO 12083:1995
-//USA-DOD//DTD MIL-M-28001B/table//EN Table subDTD from CALS
-//ISO/CS//DTD isonet::0.01//E ISONET based DTD for database profile

13. XML DTD

The XML-DTD is derived from the above SGML structure.

13.1 XMLization

Major modifications for XMLization are:

  1. Comments within declaration are extracted to be separate comment statements.
  2. Characters are adjusted according to the XML rule of case sensitivity.
  3. All tags are described without omission.
  4. Each element is defined separately.
  5. All the attribute values are quoted.
  6. Attribute types NAME, NUMBER, and NUTOKEN are changed into NMTOKEN.
  7. The location of #PCDATA is changed into a head of declaration.
  8. Content models are modified without & separators.
  9. Characters defined by SDATA are changed into simple strings.
  10. Elements declarations are changed without exceptions.
  11. URIs are specified to the public identifies.

13.2 Modularization

The XML-DTD is modularized for a more feasible DTD exchange. The modularization is based on the logical structure of the original SGML-DTD (see Figure 2).

Figure 2 — Referencing relationship between the files of the SGML-DTD
ITSIG/stdex94.dtd (MATH, ARTWORK, Figure, Terminology)
   +--- ITSIG/m12083.dtd (Formula)
   +--- ITSIG/tl93a.dtd (Terminology)
   +--- ITSIG/isonet10.dtd (ISONET)
   +--- ITSIG/se9573.dtd (Entities)
   |      +--- ent9573/isolat1.ent, ent9573/isolat2.ent, ent9573/isonum.ent,
   |      +--- ent9573/isodia.ent, ent9573/isopub.ent, ent9573/isobox.ent,
   |      +--- ent9573/isotech.ent, ent9573/isogrk1.ent, ent9573/isogrk2.ent,
   |      +--- ent9573/isogrk3.ent, ent9573/isogrk4.ent, ent9573/isocyr1.ent,
   |      +--- ent9573/isocyr2.ent, ent9573/isoamsa.ent, ent9573/isoamsb.ent,
   |      +--- ent9573/isoamsc.ent, ent9573/isoamsn.ent, ent9573/isoamso.ent,
   |      +--- ent9573/isoamsr.ent, ent9573/isomfrk.ent, ent9573/isomopf.ent,
   |      +--- ent9573/isomscr.ent, ent9573/isocs.ent
   +--- ITSIG/calstab.dtd (Table)
   +--- ITSIG/stdb94.dtd (NOTATION, parameter entities,
                          structure, displayed elements,
                          terminology list, figure, table, formula)

All the XML-DTD module files are shown in Annex D. A file with the extension ".dtd" is a driver or a DTD module translated from the corresponding SGML-DTD file and a file with ".mod" is a new DTD file developed for the modularized XML-DTD representation.

(1) stdex.dtd [DTD Driver]
(2) stdex-model.mod [Model Module]
(3) stdex-profile.mod [Profile Module]
(4) isonet10.dtd [Isonet Module]
(5) se9573.dtd [Entity]
(6) stdex-base.mod [Base Element Module]
(7) stdex-notation.mod [Notation]
(8) stdex-tpage.mod [Title Page]
(9) stdex-lpage.mod [Last Cover Page]
(10) stdex-toc.mod [Table of Contents]
(11) stdex-index.mod [Index]
(12) stdex-foreword.mod [Foreword]
(13) stdex-intro.mod [Introduction]
(14) stdex-body.mod [Body]
(15) stdex-annex.mod [Annex]
(16) stdex-nest.mod [Nested Subdivisions]
(17) stdex-disp.mod [Displayed Components]
(18) stdex-tl-simple.mod [Terminology List Simple Module]
(19) stdex-tl.mod [Terminology List Module]
(20) stdex-inline.mod [Inline Components]
(21) stdex-artwork-simple.mod [Artwork Simple Module]
(22) stdex-artwork.mod [Artwork Module]
(23) stdex-ref.mod [Referential Components]
(24) stdex-float.mod [Float Components]
(25) stdex-figure-default.mod [Figure Default Module]
(26) stdex-figure.mod [Figure Module]
(27) stdex-table.mod [Table]
(28) calstab.dtd [Cals Table]
(29) stdex-specific.mod [Very Specific Components]
(30) stdex-math-simple.mod [Math Simple Module]
(31) stdex-math.mod [Math Module]
(32) stdex-math-extension.mod [Math Extension Module]
(33) stdex-tol.mod [Tolerance]
(34) stdex-chem.mod [Chemistry]
(35) stdex-listing.mod [Listing Module]

The referencing relationship of the modules is illustrated in Figure 3.

Figure 3 — Referencing relationship of the module files consisting of the XML-DTD
stdex.dtd [DTD Driver]
   +--- stdex-model.mod [Model Module]
   +--- stdex-profile.mod [Profile Module]
   |      +--- isonet10.dtd [Isonet Module]
   |              +--- se9573.dtd [Entity]
   +--- stdex-base.mod [Base Element Module]
   |      +--- stdex-notation.mod [Notation]
   |      +--- stdex-tpage.mod [Title Page]
   |      +--- stdex-lpage.mod [Last Cover Page]
   |      +--- stdex-toc.mod [Table of Contents]
   |      +--- stdex-index.mod [Index]
   |      +--- stdex-foreword.mod [Foreword]
   |      +--- stdex-intro.mod [Introduction]
   |      +--- stdex-body.mod [Body]
   |      +--- stdex-annex.mod [Annex]
   |      +--- stdex-nest.mod [Nested Subdivisions]
   |      +--- stdex-disp.mod [Displayed Components]
   |      +--- stdex-tl.mod [Terminology List]
   |      +--- stdex-inline.mod [Inline Components]
   |      |      +--- stdex-artwork.mod [Artwork]
   |      +--- stdex-ref.mod [Referential Components]
   |      +--- stdex-float.mod [Float Components]
   |      |      +--- stdex-figure.dtd [Figure]
   |      |      +--- stdex-table.dtd [Table]
   |      |             +--- calstab.dtd [Cals Table]
   |      +--- stdex-specific.mod [Very Specific Components]
   |      |      +--- stdex-math.mod [Math]
   |      |             +--- stdex-math-extension.mod [Math Extension Module]
   |      |      +--- stdex-tol.mod [Tolerance]
   |      |      +--- stdex-chem.mod [Chemistry]
   |      +--- se9573.dtd [Entity]
   +--- stdex-listing.mod [Listing Module]

NOTE The values of gtext attributes are generated by a particular processor. Those attributes generation and rendering can be done, for example, by an XSL processor.

13.3 Non-ISONET base description

For non-ISONET base bibinfo description, the following document profile is prepared.

<!-- ITSIG exchange DocumentProfile Module --> <!-- file: stdex-docprof.mod --> <!-- ITSIG exchange DocumentProfile Module (c) International Organization for Standardization 1991 Permission to copy in any form is granted for use with comforming WebSGML systems and appilications as defined in ISO 8879:1986(WWW), provided this notice is included in all copies. --> <!-- document profile --> <!ELEMENT docprof (titles, edition, version?, language, refnums, sourceod?, notes?, endorsmt?, developc, replaces*, replaced*, abstract?, classifn*, keyword*, relstd*, prodinfo?, otherprm*, othertxt*) > <!ATTLIST docprof apply CDATA #REQUIRED > <!-- titles (in different languages) of the standard --> <!ELEMENT titles (titleent+) > <!ATTLIST titleent langcode CDATA #REQUIRED > <!ELEMENT titleent (mtitle, ptitle?) > <!-- title of the standard --> <!ELEMENT mtitle (tline+) > <!-- title line --> <!ELEMENT tline (%m.ph;)* > <!-- type used for e.g. introductory title, main title, subsidiary title --> <!ATTLIST tline type CDATA #IMPLIED > <!-- title of the part --> <!ELEMENT ptitle (ptline+) > <!-- title line --> <!ELEMENT ptline (%m.ph;)* > <!ATTLIST ptline type CDATA #IMPLIED > <!ELEMENT edition (#PCDATA) > <!ELEMENT version (#PCDATA) > <!ELEMENT language (#PCDATA) > <!-- reference numbers --> <!ELEMENT refnums (wdnumber?, number, part?, type?) > <!-- document number for working draft --> <!ELEMENT wdnumber (com, sernum) > <!ELEMENT com (#PCDATA) > <!ELEMENT sernum (#PCDATA) > <!-- number of the document --> <!ELEMENT number (#PCDATA) > <!-- number of the part --> <!ELEMENT part (#PCDATA) > <!-- type of document (types of Technical Report for ISO) --> <!ELEMENT type (#PCDATA) > <!-- source of document (ISO|ISOIEC) --> <!ELEMENT sourceod (#PCDATA) > <!-- notes for document --> <!ELEMENT notes (#PCDATA) > <!ELEMENT endorsmt (endorsent+) > <!ELEMENT endorsent (endorsdn, endorsnt?) > <!-- document number of endorsed standard --> <!ELEMENT endorsdn (#PCDATA) > <!-- endorsement note --> <!ELEMENT endorsnt (%m.pseq;) > <!-- stages in the development cycle --> <!ELEMENT developc (developent)+ > <!ELEMENT developent (status, scdate, votestrt?, voteend?, report?) > <!-- status of document --> <!ELEMENT status (#PCDATA) > <!-- date for the status change --> <!ELEMENT scdate (#PCDATA) > <!-- date for the start of vote --> <!ELEMENT votestrt (#PCDATA) > <!-- date for the end of vote --> <!ELEMENT voteend (#PCDATA) > <!-- report --> <!ELEMENT report (%m.pseq;) > <!-- reference to replacement document and comment --> <!ELEMENT replaces (extref, replcom) > <!ELEMENT replaced (extref, replcom) > <!ELEMENT replcom (%m.pseq;) > <!-- abstract --> <!ELEMENT abstract (%m.pseq;)* > <!-- classification of standard --> <!ELEMENT classifn (#PCDATA) > <!ATTLIST classifn type CDATA "UDC" > <!-- keyword --> <!ELEMENT keyword (#PCDATA) > <!-- related standard --> <!ELEMENT relstd (#PCDATA) > <!-- production specific information --> <!ELEMENT prodinfo (prodent*) > <!ELEMENT prodent (prodparm, prodval) > <!-- name of production parameter --> <!ELEMENT prodparm (#PCDATA) > <!-- value of production parameter --> <!ELEMENT prodval (#PCDATA) > <!-- other parameter information --> <!ELEMENT otherprm (#PCDATA) > <!ATTLIST otherprm type CDATA #REQUIRED > <!-- other textual information --> <!ELEMENT othertxt (%m.pseq;) > <!ATTLIST othertxt type CDATA #REQUIRED >


 

Annex A
(informative)
Example of terminology in SGML


This is a complete SGML document which contains the terminology from ISO/IEC Directives, Part 3, 1997.

<!DOCTYPE standard PUBLIC "-//ISO/CS//DTD std::exchange::93//EN" [ <!entity profile "" > ]> <standard language="UK">&profile;<tpage></tpage> <FOREWORD><HT>Foreword</HT><P>Boiler-plate text..</P></FOREWORD> <body> <?php get_header(); ?> <div id="content-border" class="fullwidth"> <div id="content-top-border-shadow"></div> <div id="content-bottom-border-shadow"></div> <div id="content" class="clearfix"> <div id="content-right-bg" class="clearfix"> <div id="left-area"> <SCOPE><HT>Scope</HT> <p>This is an example for tagging of the English terminology from ISO/IEC Directives, Part 3, 1997.</P> </SCOPE> <REFS><HT>Normative references</HT><P>Boiler-plate text..</P> </REFS> <DEFS><HT>Definitions</HT> <P>For the purposes of this part of the ISO/IEC Directives, the terms and definitions given in ISO/IEC Guide 2 (some of which are repeated below for convenience) and the following apply.</P> <TL> <C1 GTEXT="3.1"> <TERMDEF>standard</TERMDEF> <TERMDES> <P>document, established by consensus and approved by a recognized body, that provides, for common and repeated use, rules, guidelines or characteristics for activities or their results, aimed at the achievement of the optimum degree of order in a given context</P> <NOTE> Standards should be based on the consolidated results of science, technology and experience, and aimed at the promotion of optimum community benefits.</NOTE> <P>[ISO/IEC Guide 2:1996, definition 3.2]</P> </TERMDES> <C2 GTEXT="3.1.1"> <TERMDEF>international standard</TERMDEF> <TERMDES> <P>standard that is adopted by an international standardizing/standards organization and made available to the public</P> <P>[ISO/IEC Guide 2:1996, definition 3.2.1.1]</P> <NOTE>International standards published by ISO and IEC are written with a capital "I" and "S", i.e. "International Standard".</NOTE> </TERMDES> </C2> </C1> <CC1 GTEXT="3.2"><HC>Technical Report</HC> <C2 GTEXT="3.2.1"> <TERMDEF>type 1 Technical Report</TERMDEF> <TERMDES><P>publication for which the required support for approval as an International Standard cannot be obtained, or for which there is doubt on whether consensus has been achieved</P> <NOTE>The content of a type 1 Technical Report, including its annexes, may include information that is of a normative nature, although the document itself is not of a normative nature.</NOTE> </TERMDES> </C2> <C2 GTEXT="3.2.2"> <TERMDEF>type 2 Technical Report</TERMDEF> <TERMDES> <P>publication of work still under technical development, or where for any other reason there is the future, but not immediate, possibility of agreement on an International Standard</P> <NOTE> The content of a type 2 Technical Report, including its annexes, may include information that is of a normative nature, although the document itself is not of a normative nature.</NOTE> </TERMDES> </C2> <C2 GTEXT="3.2.3"> <TERMDEF>type 3 Technical Report</TERMDEF> <TERMDES> <P>informative publication containing collected data of a different kind from that which is normally published as an International Standard</P> <NOTE>Such data may include, for example, data obtained from a survey carried out among the national bodies, data on work in other international organizations or data on the "state of the art" in relation to standards of national bodies on a particular subject.</NOTE> </TERMDES> </C2> </CC1> <C1 GTEXT="3.3"> <TERMDEF>Guide</TERMDEF> <TERMDES> <P>publication containing material on general matters related to international standardization</P> </TERMDES> </C1> <C1 GTEXT="3.4"> <TERMDEF>normative elements</TERMDEF> <TERMDES> <P>those elements setting out the provisions to which it is necessary to conform in order to be able to claim compliance with the standard</P> </TERMDES> </C1> <CC1 GTEXT="3.5"><HC>informative elements</HC> <C2 GTEXT="3.5.1"> <TERMDEF>preliminary elements</TERMDEF> <TERMDES> <P>those elements that identify the standard, introduce its content and explain its background, its development and its relationship with other standards</P> </TERMDES> </C2> <C2 GTEXT="3.5.2"> <TERMDEF>supplementary elements</TERMDEF> <TERMDES> <P>those elements that provide additional information intended to assist the understanding or use of the standard</P> </TERMDES> </C2> </CC1> <C1 GTEXT="3.6"> <TERMDEF>required element</TERMDEF> <TERMDES> <P>element the presence of which in a standard is obligatory</P> </TERMDES> </C1> <C1 GTEXT="3.7"> <TERMDEF>optional element</TERMDEF> <TERMDES> <P>element the presence of which in a standard is dependent on the provisions of the particular standard</P> </TERMDES> </C1> <C1 GTEXT="3.8"> <TERMDEF>provision</TERMDEF> <TERMDES> <P>expression in the content of a normative document, that takes the form of a statement, an instruction, a recommendation or a requirement</P> <NOTE>These types of provision are distinguished by the form of wording they employ; e.g. instructions are expressed in the imperative mood, recommendations by the use of the auxiliary "should" and requirements by the use of the auxiliary "shall".</NOTE> <P>[ISO/IEC Guide 2:1996, definition 7.1]</P> </TERMDES> <C2 GTEXT="3.8.1"> <TERMDEF>statement</TERMDEF> <TERMDES> <P>provision that conveys information</P> <P>[ISO/IEC Guide 2:1996, definition 7.2]</P> </TERMDES> </C2> <C2 GTEXT="3.8.2"> <TERMDEF>instruction</TERMDEF> <TERMDES> <P>provision that conveys an action to be performed</P> <P>[ISO/IEC Guide 2:1996, definition 7.3]</P> </TERMDES> </C2> <C2 GTEXT="3.8.3"> <TERMDEF>recommendation</TERMDEF> <TERMDES> <P>provision that conveys advice or guidance </P> <P>[ISO/IEC Guide 2:1996, definition 7.4]</P> </TERMDES> </C2> <C2 GTEXT="3.8.4"> <TERMDEF>requirement</TERMDEF> <TERMDES> <P>provision that conveys criteria to be fulfilled</P> <P>[ISO/IEC Guide 2:1996, definition 7.5]</P> </TERMDES> </C2> </C1> <C1 GTEXT="3.9"> <TERMDEF>state of the art</TERMDEF> <TERMDES> <P>developed stage of technical capability at a given time as regards products, processes and services, based on the relevant consolidated findings of science, technology and experience</P> <P>[ISO/IEC Guide 2:1996, definition 1.4]</P> </TERMDES> </C1> </TL> </DEFS> </div> <!-- end #left-area --> </div> <!-- end #content-right-bg --> </div> <!-- end #content --> </div> <!-- end #content-border --> <?php get_footer(); ?></body> </STANDARD>


Annex B
(informative)
Example of terminology presentation


This annex is the result of interpretation of SGML- tagged example of terminology given in Annex B.

B.1 standard

document, established by consensus and approved by a recognized body, that provides, for common and repeated use, rules, guidelines or characteristics for activities or their results, aimed at the achievement of the optimum degree of order in a given context

NOTE 1   Standards should be based on the consolidated results of science, technology and experience, and aimed at the promotion of optimum community benefits.

[ISO/IEC Guide 2:1996, definition 3.2]

B.1.1 international standard

standard that is adopted by an international standardizing/standards organization and made available to the public

[ISO/IEC Guide 2:1996, definition 3.2.1.1]

NOTE 1   International standards published by ISO and IEC are written with a capital "I" and "S", i.e. "International Standard".

B.2 Technical Report

B.2.1 type 1 Technical Report

publication for which the required support for approval as an International Standard cannot be obtained, or for which there is doubt on whether consensus has been achieved

NOTE 1   The content of a type 1 Technical Report, including its annexes, may include information that is of a normative nature, although the document itself is not of a normative nature.

B.2.2 type 2 Technical Report

publication of work still under technical development, or where for any other reason there is the future, but not immediate, possibility of agreement on an International Standard

NOTE 1   The content of a type 2 Technical Report, including its annexes, may include information that is of a normative nature, although the document itself is not of a normative nature.

B.2.3 type 3 Technical Report

informative publication containing collected data of a different kind from that which is normally published as an International Standard

NOTE 1   Such data may include, for example, data obtained from a survey carried out among the national bodies, data on work in other international organizations or data on the "state of the art" in relation to standards of national bodies on a particular subject.

B.3 Guide

publication containing material on general matters related to international standardization

B.4 normative elements

those elements setting out the provisions to which it is necessary to conform in order to be able to claim compliance with the standard

B.5 informative elements

B.5.1 preliminary elements

those elements that identify the standard, introduce its content and explain its background, its development and its relationship with other standards

B.5.2 supplementary elements

those elements that provide additional information intended to assist the understanding or use of the standard

B.6 required element

element the presence of which in a standard is obligatory

B.7 optional element

element the presence of which in a standard is dependent on the provisions of the particular standard

B.8 provision

expression in the content of a normative document, that takes the form of a statement, an instruction, a recommendation or a requirement

NOTE 1   These types of provision are distinguished by the form of wording they employ; e.g. instructions are expressed in the imperative mood, recommendations by the use of the auxiliary "should" and requirements by the use of the auxiliary "shall".

[ISO/IEC Guide 2:1996, definition 7.1]

B.8.1 statement

provision that conveys information

[ISO/IEC Guide 2:1996, definition 7.2]

B.8.2 instruction

provision that conveys an action to be performed

[ISO/IEC Guide 2:1996, definition 7.3]

B.8.3 recommendation

provision that conveys advice or guidance

[ISO/IEC Guide 2:1996, definition 7.4]

B.8.4 requirement

provision that conveys criteria to be fulfilled

[ISO/IEC Guide 2:1996, definition 7.5]

B.9 state of the art

developed stage of technical capability at a given time as regards products, processes and services, based on the relevant consolidated findings of science, technology and experience

[ISO/IEC Guide 2:1996, definition 1.4]


Annex C
(informative)
SGML DTDs for profile


C.1  DTD for database-oriented profile

<!-- (C) International Organization for Standardization 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998 Permission to copy in any form is granted for use with conforming SGML systems and applications as defined in ISO 8879, provided this notice is included in all copies. This is a DTD for ISONET manual. Version 0.01 -//ISO/CS//DTD isonet::0.01//EN --> <!-- simple data types --> <!-- integer value as in C --> <!ELEMENT int - - (#PCDATA) > <!ATTLIST int id CDATA #IMPLIED > <!-- real value as in C --> <!ELEMENT real - - (#PCDATA) > <!ATTLIST real id CDATA #IMPLIED > <!-- minimal literal as in SGML --> <!ELEMENT code - - (#PCDATA) > <!ATTLIST code id CDATA #IMPLIED > <!-- text (with entities) in SGML --> <!ELEMENT text - - (#PCDATA) > <!ATTLIST text id CDATA #IMPLIED lang CDATA "en" > <!-- Public identifier as in SGML --> <!ELEMENT pubid - - (#PCDATA) > <!ATTLIST pubid id CDATA #IMPLIED > <!-- date in accordance with ISO 8601 --> <!ELEMENT date - - (#PCDATA) > <!ATTLIST date id CDATA #IMPLIED > <!-- harmonized stage code --> <!ELEMENT hstage - - (#PCDATA) > <!ATTLIST hstage id CDATA #IMPLIED > <!-- ICS classification --> <!ELEMENT ics - - (#PCDATA) > <!ATTLIST ics id CDATA #IMPLIED > <!-- language code in accordance with ISO 639 --> <!ELEMENT lang - - (#PCDATA) > <!ATTLIST lang id CDATA #IMPLIED > <!-- unique record indentifier --> <!ELEMENT rec.id - - (#PCDATA) > <!ATTLIST rec.id id CDATA #IMPLIED > <!-- unique organization identifier --> <!ELEMENT org.id - - (#PCDATA) > <!ATTLIST org.id id CDATA #IMPLIED > <!-- unique committee identifier --> <!ELEMENT comm.id - - (#PCDATA) > <!ATTLIST comm.id id CDATA #IMPLIED > <!-- complex data types --> <!-- title which may contain from the several component separated by fillers --> <!ELEMENT title - - (#PCDATA|comp)+ > <!ATTLIST title id CDATA #IMPLIED lang CDATA "en" > <!ELEMENT comp - - (#PCDATA) > <!ATTLIST comp id CDATA #IMPLIED > <!-- reference number from the cover page may be presented as just a text or in structured way for ISO reference number --> <!ELEMENT refnum - - (#PCDATA|code|int)+ > <!ATTLIST refnum id CDATA #IMPLIED > <!-- fields, group 00 (file label) --> <!ENTITY % e00 "e00.003, e00.006" > <!ELEMENT e00.003 - - (date) > <!ATTLIST e00.003 id CDATA #IMPLIED > <!ELEMENT e00.006 - - (org.id) > <!ATTLIST e00.006 id CDATA #IMPLIED > <!-- fields, group 10 (projects) --> <!ENTITY % e10 "e10.001, e10.202, e10.204, (e10.300, e10.310)?, (e10.336, e10.338)?" > <!-- project information --> <!ELEMENT e10.001 - - (rec.id) > <!ATTLIST e10.001 id CDATA #IMPLIED > <!-- project owner --> <!ELEMENT e10.202 - - (org.id+) > <!ATTLIST e10.202 id CDATA #IMPLIED > <!-- project technical committee --> <!ELEMENT e10.204 - - (comm.id+) > <!ATTLIST e10.204 id CDATA #IMPLIED > <!-- project current stage code --> <!ELEMENT e10.300 - - (hstage) > <!ATTLIST e10.300 id CDATA #IMPLIED > <!-- date of current stage code --> <!ELEMENT e10.310 - - (date) > <!ATTLIST e10.310 id CDATA #IMPLIED > <!-- project next stage code --> <!ELEMENT e10.336 - - (hstage) > <!ATTLIST e10.336 id CDATA #IMPLIED > <!-- target date of next stage code --> <!ELEMENT e10.338 - - (date) > <!ATTLIST e10.338 id CDATA #IMPLIED > <!-- fields, group 20 (products) --> <!ENTITY % e20 "e20.001, e20.104, e20.200, e20.208?, e20.212?, e20.216, e20.220?, e20.228?, e20.310?, e20.502?, e20.504?, e20.700?" > <!-- document information --> <!ELEMENT e20.001 - - (rec.id) > <!ATTLIST e20.001 id CDATA #IMPLIED > <!-- document reference number --> <!ELEMENT e20.104 - - (refnum) > <!ATTLIST e20.104 id CDATA #IMPLIED > <!-- document title --> <!ELEMENT e20.200 - - (title+) > <!ATTLIST e20.200 id CDATA #IMPLIED > <!-- document languages --> <!ELEMENT e20.208 - - (lang+) > <!ATTLIST e20.208 id CDATA #IMPLIED > <!-- number of pages type --> <!ELEMENT e20.212 - - (int) > <!ATTLIST e20.212 id CDATA #IMPLIED > <!-- document type --> <!ELEMENT e20.216 - - (code) > <!ATTLIST e20.216 id CDATA #IMPLIED > <!-- document edition --> <!ELEMENT e20.220 - - (int) > <!ATTLIST e20.220 id CDATA #IMPLIED > <!-- document price group --> <!ELEMENT e20.228 - - (code) > <!ATTLIST e20.228 id CDATA #IMPLIED > <!-- date of publication --> <!ELEMENT e20.310 - - (date) > <!ATTLIST e20.310 id CDATA #IMPLIED > <!-- document ICS --> <!ELEMENT e20.502 - - (ics+) > <!ATTLIST e20.502 id CDATA #IMPLIED > <!-- document TIT descriptor --> <!ELEMENT e20.504 - - (text+) > <!ATTLIST e20.504 id CDATA #IMPLIED > <!-- issuing body --> <!ELEMENT e20.700 - - (org.id+) > <!ATTLIST e20.700 id CDATA #IMPLIED > <!-- fields, group 40 (committees) --> <!ENTITY % e40 "e40.104, e40.130, e40.140, e40.145, e40.150?" > <!-- committee identifier --> <!ELEMENT e40.104 - - (comm.id) > <!ATTLIST e40.104 id CDATA #IMPLIED > <!-- committee name --> <!ELEMENT e40.130 - - (text+) > <!ATTLIST e40.130 id CDATA #IMPLIED > <!-- committee type --> <!ELEMENT e40.140 - - (code) > <!ATTLIST e40.140 id CDATA #IMPLIED > <!-- committee number --> <!ELEMENT e40.145 - - (int) > <!ATTLIST e40.145 id CDATA #IMPLIED > <!-- reporting committee --> <!ELEMENT e40.150 - - (comm.id) > <!ATTLIST e40.150 id CDATA #IMPLIED > <!-- containers for the groups --> <!ELEMENT e00 - - (%e00;) > <!ATTLIST e00 id CDATA #IMPLIED > <!ELEMENT e10 - - (%e10;) > <!ATTLIST e10 id CDATA #IMPLIED > <!ELEMENT e20 - - (%e20;)+ > <!ATTLIST e20 id CDATA #IMPLIED > <!ELEMENT e40 - - ((%e40;)+) > <!ATTLIST e40 id CDATA #IMPLIED > <!-- whole ISONET manual --> <!ELEMENT isonet - - (e00?, e10?, e20?, e40?) > <!ATTLIST isonet id CDATA #IMPLIED >


Annex D
(informative)
XML DTD Molules


See the attached file 1.


Annex E
(informative)
Schema module by RELAX NG (ISO/IEC CD 19757-2)


See the attached file 2.


Annex F
(informative)
XSLT specification for translation to HTML


See the attached file 3.


<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0//EN" encoding="UTF-16"/> <!-- XSLT stylesheet for ISO/IEC stdex.dtd --> <!-- version.0.42 --> <xsl:template match="/"> <!-- contents: standard --> <xsl:apply-templates/> </xsl:template> <xsl:template match="standard"> <!-- contents: @language tpage body --> <html> <!-- ISO/IEC JTC 1/SC 34 - doc 0305.htm - Tue, 10 Feb 2004 02:26:19 GMT --> <head> <title>ISO/IEC IT --- Ver.0.42 ---</title> </head> <style> h1 { font-size: 24pt ; color : white ; background-color: blue ;} h2 { font-soze: 24pt ; color : white ; background-color: green ;} h3 { font-size: 12pt ; color : black ; background-color: white ;} h4 { font-size: 10pt ; color : black ; background-color: white ;} h5 { font-size: 10pt ; color : black ; background-color: white ;} h6 { font-size: 10pt ; color : black ; background-color: white ;} strong.blue { color: blue ; font-weight: bold ;} dt { font-weight: bold ;} ol { list-style: none outside } ul { list-style: none outside } a:link { color: blue ;} a:visit { } a:active { color: red ;} a:hover { color: green ;} p { margin-top : 0.5em ; margin-bottom : 1.5em ;} item { color: blue ; font-weight: bold ;} fn { color: blue ; font-weight: bold ;} </style> <body> <?php get_header(); ?> <div id="content-border" class="fullwidth"> <div id="content-top-border-shadow"></div> <div id="content-bottom-border-shadow"></div> <div id="content" class="clearfix"> <div id="content-right-bg" class="clearfix"> <div id="left-area"> <xsl:call-template name="frontm"/> <hr/> <xsl:call-template name="toc"/> <xsl:call-template name="lof"/> <xsl:call-template name="lot"/> <hr/> <xsl:apply-templates/> <xsl:call-template name="backm"/> </div> <!-- end #left-area --> </div> <!-- end #content-right-bg --> </div> <!-- end #content --> </div> <!-- end #content-border --> <?php get_footer(); ?></body> <!-- ISO/IEC JTC 1/SC 34 - doc 0305.htm - Tue, 10 Feb 2004 02:26:19 GMT --> </html> </xsl:template> <xsl:template name="frontm"> <!-- front matter --> <xsl:apply-templates select='profile/profdoc[@type="FULL"]' mode="frontm"/> </xsl:template> <xsl:template match="profdoc" mode="frontm"> <!-- profdoc for front matter --> <xsl:apply-templates select='docprof[@apply="ISO"]' mode="frontm"/> </xsl:template> <xsl:template match="docprof" mode="frontm"> <!-- docprof for front matter --> <xsl:variable name="lang" select="language/text()"/> <b><font size="5"> <xsl:call-template name="docstat"> <xsl:with-param name="status" select="developc/developent[last()]/status"/> </xsl:call-template> <div align="right"> <xsl:call-template name="docsource"> <xsl:with-param name="source" select="sourceod"/> </xsl:call-template> <xsl:value-of select="refnums/number"/> <xsl:if test='refnums/part'> <xsl:text>-</xsl:text> <xsl:value-of select="refnums/part"/> </xsl:if> <br/> <font size="2"> <xsl:value-of select="edition"/> <xsl:text> edition</xsl:text> </font> <br/> <font size="1"> <xsl:value-of select="developc/developent[last()]/scdate"/> </font> </div> <xsl:apply-templates select="titles/titleent[@langcode=$lang]" mode="frontm"/> </font></b> <font size="3"> <xsl:apply-templates select="titles/titleent[@langcode!=$lang]" mode="frontm"/> </font> <div align="right"> <font size="2"> <xsl:text>Reference number</xsl:text><br/> <xsl:call-template name="refnum"/> </font> </div> </xsl:template> <xsl:template name="docstat"> <xsl:param name="status"/> <xsl:choose> <xsl:when test='$status="IS"'> <xsl:text>INTERNATIONAL STANDARD</xsl:text> </xsl:when> <xsl:when test='$status="TR"'> <xsl:text>TECHNICAL REPORT</xsl:text> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="docsource"> <xsl:param name="source"/> <xsl:choose> <xsl:when test='$source="ISOIEC"'> <xsl:text>ISO/IEC </xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>ISO </xsl:text> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="titleent" mode="frontm"> <xsl:for-each select="mtitle/tline"> <xsl:apply-templates/><br/> </xsl:for-each> <xsl:if test='ptitle'> <xsl:call-template name="part"> <xsl:with-param name="lang" select="@langcode"/> </xsl:call-template> <xsl:value-of select="../../refnums/part"/> <xsl:text>:</xsl:text><br/> <xsl:for-each select="ptitle/ptline"> <xsl:apply-templates/><br/> </xsl:for-each> </xsl:if> </xsl:template> <xsl:template name="part"> <xsl:param name="lang"/> <xsl:choose> <xsl:when test='$lang="EN"'> <xsl:text>Part</xsl:text> </xsl:when> <xsl:when test='$lang="FR"'> <xsl:text>Partie</xsl:text> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="refnum"> <xsl:call-template name="docsource"> <xsl:with-param name="source" select="sourceod"/> </xsl:call-template> <xsl:value-of select="refnums/number"/> <xsl:if test='refnums/part'> <xsl:text>-</xsl:text> <xsl:value-of select="refnums/part"/> </xsl:if> <xsl:text>:</xsl:text> <xsl:variable name="date" select="developc/developent[last()]/scdate"/> <xsl:value-of select="substring($date, 0, 5)"/> <xsl:text>(</xsl:text> <xsl:call-template name="langid"> <xsl:with-param name="lang" select="language"/> </xsl:call-template> <xsl:text>)</xsl:text> </xsl:template> <xsl:template name="langid"> <xsl:param name="lang"/> <xsl:choose> <xsl:when test='$lang="EN"'> <xsl:text>E</xsl:text> </xsl:when> <xsl:when test='$lang="FR"'> <xsl:text>F</xsl:text> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="toc"> <h1>Contents</h1> <ul> <xsl:for-each select="foreword|body/scope|body/refs|body/defs|//h1|//h2|//h3|//h4|//h5|//h6|annexi|index"> <xsl:call-template name="toc-ent"/> </xsl:for-each> </ul> </xsl:template> <xsl:template name="toc-ent"> <li> <xsl:element name="a"> <xsl:choose> <xsl:when test='self::index'> <xsl:attribute name="href"> <xsl:text>#in</xsl:text> <xsl:number level="any" count="index"/> </xsl:attribute> </xsl:when> <xsl:when test='self::foreword'> <xsl:attribute name="href"> <xsl:text>#fo</xsl:text> <xsl:number level="any" count="foreword"/> </xsl:attribute> </xsl:when> <xsl:when test='ancestor::body'> <xsl:attribute name="href"> <xsl:text>#bo</xsl:text> <xsl:number level="multiple" count="scope|refs|defs|h1|h2|h3|h4|h5|h6" from="body"/> </xsl:attribute> <xsl:number level="multiple" count="scope|refs|defs|h1|h2|h3|h4|h5|h6" from="body" format="1.1 "/> </xsl:when> <xsl:otherwise> <xsl:attribute name="href"> <xsl:text>#an</xsl:text> <xsl:number level="multiple" count="annexi|h1|h2|h3|h4|h5|h6"/> </xsl:attribute> <xsl:if test='self::annexi'> <xsl:text>Annex </xsl:text> </xsl:if> <xsl:number level="multiple" count="annexi|h1|h2|h3|h4|h5|h6" format="A.1 "/> <xsl:if test='self::annexi'> <xsl:text>(</xsl:text> <xsl:value-of select="@status"/> <xsl:text>) </xsl:text> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:value-of select="ht"/> </xsl:element> </li> </xsl:template> <xsl:template name="lof"> <xsl:if test='//figure'> <h2>Figures</h2> <ul> <xsl:for-each select="//figure"> <xsl:call-template name="lof-ent"/> </xsl:for-each> </ul> </xsl:if> </xsl:template> <xsl:template name="lof-ent"> <li> <xsl:element name="a"> <xsl:choose> <xsl:when test='ancestor::body'> <xsl:attribute name="href"> <xsl:text>#bof</xsl:text> <xsl:number level="any" count="figure" from="body"/> </xsl:attribute> <xsl:text>Figure </xsl:text> <xsl:number level="any" count="figure" from="body"/> </xsl:when> <xsl:otherwise> <xsl:attribute name="href"> <xsl:text>#anf</xsl:text> <xsl:number level="multiple" count="annexi|figure"/> </xsl:attribute> <xsl:text>Figure </xsl:text> <xsl:number level="multiple" count="annexi|figure" format="A.1 "/> </xsl:otherwise> </xsl:choose> &#8211; <xsl:value-of select="figtitle"/> </xsl:element> </li> </xsl:template> <xsl:template name="lot"> <xsl:if test='//table'> <h2>Tables</h2> <ul> <xsl:for-each select="//table"> <xsl:call-template name="lot-ent"/> </xsl:for-each> </ul> </xsl:if> </xsl:template> <xsl:template name="lot-ent"> <li> <xsl:element name="a"> <xsl:choose> <xsl:when test='ancestor::body'> <xsl:attribute name="href"> <xsl:text>#bot</xsl:text> <xsl:number level="any" count="table" from="body"/> </xsl:attribute> <xsl:text>Table </xsl:text> <xsl:number level="any" count="table" from="body"/> </xsl:when> <xsl:otherwise> <xsl:attribute name="href"> <xsl:text>#ant</xsl:text> <xsl:number level="multiple" count="annexi|table"/> </xsl:attribute> <xsl:text>Table </xsl:text> <xsl:number level="multiple" count="annexi|table" format="A.1 "/> </xsl:otherwise> </xsl:choose> &#8211; <xsl:value-of select="tabtitle"/> </xsl:element> </li> </xsl:template> <xsl:template name="backm"> <!-- back matter --> <hr/> <xsl:apply-templates select='profile/profdoc[@type="FULL"]' mode="backm"/> </xsl:template> <xsl:template match="profdoc" mode="backm"> <xsl:apply-templates select='docprof[@apply="ISO"]' mode="backm"/> </xsl:template> <xsl:template match="docprof" mode="backm"> <b><font size="3"> <xsl:text>UDC </xsl:text> <xsl:for-each select="classifn"> <xsl:call-template name="listel"> <xsl:with-param name="delimchar">:</xsl:with-param> <xsl:with-param name="termchar"/> </xsl:call-template> </xsl:for-each> </font></b><br/> <font size="1"> <b><xsl:text>Descripters: </xsl:text></b> <xsl:for-each select="keyword"> <xsl:call-template name="listel"> <xsl:with-param name="delimchar">, </xsl:with-param> <xsl:with-param name="termchar">.</xsl:with-param> </xsl:call-template> </xsl:for-each> </font> <hr/> </xsl:template> <xsl:template name="listel"> <xsl:param name="delimchar"/> <xsl:param name="termchar"/> <xsl:apply-templates/> <xsl:choose> <xsl:when test='position()=last()'> <xsl:value-of select="$termchar"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$delimchar"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="profile"> <!-- contents: profdoc --> </xsl:template> <xsl:template match="tpage"> <!-- contents: text() --> <xsl:apply-templates/> </xsl:template> <xsl:template match="foreword"> <!-- contents: ht p --> <xsl:apply-templates/> <hr/> </xsl:template> <xsl:template match="foreword/ht"> <!-- contents: text() --> <h1> <xsl:element name="a"> <xsl:attribute name="name"> <xsl:text>fo</xsl:text> <xsl:number level="any" count="foreword"/> </xsl:attribute> <xsl:value-of select="."/> </xsl:element> </h1> </xsl:template> <xsl:template match="p"> <!-- contents: text() --> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="warning"> <!-- contents: text() --> <p><xsl:text>WARNING-</xsl:text><xsl:apply-templates/></p> </xsl:template> <xsl:template match="body"> <!-- contents: scope refs defs h1 --> <xsl:call-template name="btop"/> <xsl:apply-templates/> </xsl:template> <xsl:template name="btop"> <!-- top of body --> <xsl:apply-templates select='../profile/profdoc[@type="FULL"]' mode="btop"/> </xsl:template> <xsl:template match="profdoc" mode="btop"> <xsl:apply-templates select='docprof[@apply="ISO"]' mode="btop"/> </xsl:template> <xsl:template match="docprof" mode="btop"> <b><font size="4"> <xsl:variable name="lang" select="language/text()"/> <xsl:apply-templates select="titles/titleent[@langcode=$lang]" mode="frontm"/> </font></b> </xsl:template> <xsl:template match="scope"> <!-- contents: ht p --> <xsl:apply-templates/> </xsl:template> <xsl:template match="refs"> <!-- contents: ht p --> <xsl:apply-templates/> </xsl:template> <xsl:template match="defs"> <!-- contents: ht p tl --> <xsl:apply-templates/> </xsl:template> <xsl:template match="scope/ht|refs/ht|defs/ht"> <!-- contents: text() --> <h1> <xsl:call-template name="anchor-text"/> </h1> </xsl:template> <xsl:template name="anchor-text"> <xsl:element name="a"> <xsl:choose> <xsl:when test='ancestor::body'> <xsl:attribute name="name"> <xsl:text>bo</xsl:text> <xsl:number level="multiple" count="scope|refs|defs|h1|h2|h3|h4|h5|h6" from="body"/> </xsl:attribute> <xsl:number level="multiple" count="scope|refs|defs|h1|h2|h3|h4|h5|h6" from="body" format="1.1 "/> </xsl:when> <xsl:otherwise> <xsl:attribute name="name"> <xsl:text>an</xsl:text> <xsl:number level="multiple" count="annexi|h1|h2|h3|h4|h5|h6"/> </xsl:attribute> <xsl:if test="parent::annexi"> <xsl:text>Annex </xsl:text> </xsl:if> <xsl:number level="multiple" count="annexi|h1|h2|h3|h4|h5|h6" format="A.1 "/> <xsl:if test="parent::annexi"> <xsl:text>(</xsl:text> <xsl:value-of select="../@status"/> <xsl:text>) </xsl:text> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:if test='self::ht'> <xsl:value-of select="."/> </xsl:if> </xsl:element> </xsl:template> <xsl:template match="tl"> <!-- contents: c1* cc1* --> <xsl:apply-templates/> </xsl:template> <xsl:template match="c1"> <!-- contents: @gtext termdef termdes note p c2 --> <dl> <xsl:apply-templates/> </dl> </xsl:template> <xsl:template match="termdef"> <!-- contents: text() --> <dt><xsl:value-of select="../@gtext"/><xsl:text> </xsl:text> <xsl:apply-templates/></dt> </xsl:template> <xsl:template match="termdes"> <!-- contents: text() --> <dd><xsl:apply-templates/></dd> </xsl:template> <xsl:template match="note"> <!-- contents: text() --> <p><xsl:text>NOTE </xsl:text> <xsl:choose> <xsl:when test='@number="nonum"'/> <xsl:otherwise> <xsl:if test='count(../note) &gt; 1'> <xsl:number level="single" count="note" format="1 "/> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/></p> </xsl:template> <xsl:template match="xmp"> <!-- contents: text() --> <p><xsl:text>EXAMPLE </xsl:text> <xsl:choose> <xsl:when test='@number="nonum"'/> <xsl:otherwise> <xsl:if test='count(../xmp) &gt; 1'> <xsl:number level="single" count="xmp" format="1 "/> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/></p> </xsl:template> <xsl:template match="c2"> <!-- contents: @gtext termdef termdes note p --> <dl> <xsl:apply-templates/> </dl> </xsl:template> <xsl:template match="cc1"> <!-- contents: @gtext hc c2* --> <dl> <xsl:apply-templates/> </dl> </xsl:template> <xsl:template match="hc"> <!-- contents: text() --> <dt><xsl:value-of select="../@gtext"/><xsl:text> </xsl:text> <xsl:apply-templates/></dt> </xsl:template> <xsl:template match="fn"> <!-- contents: text() --> <xsl:element name="a"> <xsl:attribute name="onClick"> <xsl:text>alert('</xsl:text> <xsl:call-template name="fn-mark"/> <xsl:apply-templates/> <xsl:text>')</xsl:text> </xsl:attribute> <sup> <xsl:call-template name="fn-mark"/> </sup> </xsl:element> </xsl:template> <xsl:template name="fn-mark"> <xsl:choose> <xsl:when test='ancestor::figure'> <xsl:number level="single" count="fn" format="a) "/> </xsl:when> <xsl:when test='ancestor::table'> <xsl:number level="single" count="fn" format="a) "/> </xsl:when> <xsl:otherwise> <xsl:number value="count(preceding::fn)-count(preceding::fn[ancestor::figure or ancestor::table])+1" format="1) "/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="h1"> <!-- contents: ht h2 p2 --> <xsl:apply-templates/> </xsl:template> <xsl:template match="body/h1/ht"> <!-- contents: text() --> <h1> <xsl:call-template name="anchor-text"/> </h1> </xsl:template> <xsl:template match="h2"> <!-- contents: ht p note h3 --> <xsl:apply-templates/> </xsl:template> <xsl:template match="body//h2/ht"> <!-- contents: text() --> <h2> <xsl:call-template name="anchor-text"/> </h2> </xsl:template> <xsl:template match="h3"> <!-- contents: ht p note h4 --> <xsl:apply-templates/> </xsl:template> <xsl:template match="body//h3/ht"> <!-- contents: text() --> <h3> <xsl:call-template name="anchor-text"/> </h3> </xsl:template> <xsl:template match="h4"> <!-- contents: ht p note h5 --> <xsl:apply-templates/> </xsl:template> <xsl:template match="body//h4/ht"> <!-- contents: text() --> <h4> <xsl:call-template name="anchor-text"/> </h4> </xsl:template> <xsl:template match="h5"> <!-- contents: ht p note h6 --> <xsl:apply-templates/> </xsl:template> <xsl:template match="body//h5/ht"> <!-- contents: text() --> <h5> <xsl:call-template name="anchor-text"/> </h5> </xsl:template> <xsl:template match="h6"> <!-- contents: ht p note --> <xsl:apply-templates/> </xsl:template> <xsl:template match="body//h6/ht"> <!-- contents: text() --> <h6> <xsl:call-template name="anchor-text"/> </h6> </xsl:template> <xsl:template name="anchor-text2"> <xsl:choose> <xsl:when test='ancestor::body'> <b><xsl:number level="multiple" count="scope|refs|defs|h1|h2|h3|h4|h5|h6|p2|p3|p4|p5|p6" from="body" format="1.1 "/></b> </xsl:when> <xsl:otherwise> <b><xsl:number level="multiple" count="annexi|h1|h2|h3|h4|h5|h6|p2|p3|p4|p5|p6" format="A.1 "/></b> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="p2"> <!-- contents: p note p3 --> <xsl:call-template name="anchor-text2"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="p2/p|p3/p|p4/p|p5/p|p6/p"> <xsl:choose> <xsl:when test='position()=1'> <xsl:apply-templates/><br/> </xsl:when> <xsl:otherwise> <p><xsl:apply-templates/></p> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="p3"> <!-- contents: p note p4 --> <xsl:call-template name="anchor-text2"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="p4"> <!-- contents: p note p5 --> <xsl:call-template name="anchor-text2"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="p5"> <!-- contents: p note p6 --> <xsl:call-template name="anchor-text2"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="p6"> <!-- contents: p note --> <xsl:call-template name="anchor-text2"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="ul"> <!-- contents: @format[NULL bullet emdash sl] li ul --> <ul><xsl:apply-templates/></ul> </xsl:template> <xsl:template match="ol"> <!-- contents: @format[NULL alpha arabic roman arabicn] li ol --> <ol><xsl:apply-templates/></ol> </xsl:template> <xsl:template match="ul/li"> <!-- contents: --> <xsl:variable name="format" select="../@format"/> <xsl:choose> <xsl:when test='$format="bullet"'> <li>&#183; <xsl:apply-templates/></li> </xsl:when> <xsl:when test='$format="emdash"'> <li>- <xsl:apply-templates/></li> </xsl:when> <xsl:when test='$format="sl"'> <li><xsl:apply-templates/></li> </xsl:when> <xsl:otherwise> <xsl:variable name="level" select="count(ancestor::ul)"/> <xsl:choose> <xsl:when test='$level=2'> <li>&#183; <xsl:apply-templates/></li> </xsl:when> <xsl:otherwise> <li>- <xsl:apply-templates/></li> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="ol/li"> <!-- contents: --> <xsl:variable name="format" select="../@format"/> <xsl:choose> <xsl:when test='$format="alpha"'> <li><xsl:number format="a) "/><xsl:apply-templates/></li> </xsl:when> <xsl:when test='$format="arabic"'> <li><xsl:number format="1) "/><xsl:apply-templates/></li> </xsl:when> <xsl:when test='$format="roman"'> <li><xsl:number format="i) "/><xsl:apply-templates/></li> </xsl:when> <xsl:when test='$format="arabicn"'> <li><xsl:number format="1 "/><xsl:apply-templates/></li> </xsl:when> <xsl:otherwise> <xsl:variable name="level" select="count(ancestor::ol) mod 3"/> <xsl:choose> <xsl:when test='$level=1'> <li><xsl:number format="a) "/><xsl:apply-templates/></li> </xsl:when> <xsl:when test='$level=2'> <li><xsl:number format="1) "/><xsl:apply-templates/></li> </xsl:when> <xsl:otherwise> <li><xsl:number format="i) "/><xsl:apply-templates/></li> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="dl"> <!-- contents: @format[NULL ul ol syml varl] dlentry --> <xsl:choose> <xsl:when test='@format="ul"'> <ul><xsl:apply-templates/></ul> </xsl:when> <xsl:when test='@format="ol"'> <ol><xsl:apply-templates/></ol> </xsl:when> <xsl:otherwise> <dl compact="1"><xsl:apply-templates/></dl> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="dlentry"> <!-- contents: dt dd --> <xsl:variable name="format" select="../@format"/> <xsl:choose> <xsl:when test='$format="ul"'> <li><xsl:value-of select="dt"/><xsl:text> </xsl:text> <xsl:value-of select="dd"/></li> </xsl:when> <xsl:when test='$format="ol"'> <li><xsl:value-of select="dt"/><xsl:text> </xsl:text> <xsl:value-of select="dd"/></li> </xsl:when> <xsl:otherwise> <xsl:apply-templates/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="dt"> <!-- contents: text() --> <dt><xsl:apply-templates/></dt> </xsl:template> <xsl:template match="dd"> <!-- contents: text() --> <dd><xsl:apply-templates/></dd> </xsl:template> <xsl:template match="rl"> <dl><xsl:apply-templates/></dl> </xsl:template> <xsl:template match="rlentry"> <dd><xsl:apply-templates/></dd> </xsl:template> <xsl:template match="hp"> <!-- contents: @format[none bold italic boldit uline oline code hide ] text() --> <xsl:choose> <xsl:when test='@format="bold"'> <b><xsl:apply-templates/></b> </xsl:when> <xsl:when test='@format="italic"'> <i><xsl:apply-templates/></i> </xsl:when> <xsl:when test='@format="boldit"'> <i><b><xsl:apply-templates/></b></i> </xsl:when> <xsl:when test='@format="uline"'> <u><xsl:apply-templates/></u> </xsl:when> <xsl:when test='@format="oline"'> <span style="text-decoration: overline"><xsl:apply-templates/></span> </xsl:when> <xsl:when test='@format="code"'> <code><xsl:apply-templates/></code> </xsl:when> <xsl:when test='@format="hide"'> <font -color="white"><xsl:apply-templates/></font> </xsl:when> <xsl:otherwise> <xsl:apply-templates/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="superscript"> <!-- contents: text() --> <sup><xsl:apply-templates/></sup> </xsl:template> <xsl:template match="subscript"> <!-- contents: text() --> <sub><xsl:apply-templates/></sub> </xsl:template> <xsl:template match="annexi"> <!-- contents: ht h1 --> <xsl:apply-templates/> </xsl:template> <xsl:template match="annexi/ht"> <!-- contents: text() --> <h1> <xsl:call-template name="anchor-text"/> </h1> </xsl:template> <xsl:template match="annexi/h1/ht"> <!-- contents: text() --> <h2> <xsl:call-template name="anchor-text"/> </h2> </xsl:template> <xsl:template match="annexi//h2/ht"> <!-- contents: text() --> <h3> <xsl:call-template name="anchor-text"/> </h3> </xsl:template> <xsl:template match="annexi//h3/ht"> <!-- contents: text() --> <h4> <xsl:call-template name="anchor-text"/> </h4> </xsl:template> <xsl:template match="annexi//h4/ht"> <!-- contents: text() --> <h5> <xsl:call-template name="anchor-text"/> </h5> </xsl:template> <xsl:template match="annexi//h5/ht"> <!-- contents: text() --> <h6> <xsl:call-template name="anchor-text"/> </h6> </xsl:template> <xsl:template match="annexi//h6/ht"> <!-- contents: text() --> <p> <xsl:call-template name="anchor-text"/> </p> </xsl:template> <xsl:template match="annexi//p2"> <!-- contents: p note p3 --> <h3> <xsl:call-template name="anchor-text"/> </h3> <xsl:apply-templates/> </xsl:template> <xsl:template match="annexi//p3"> <!-- contents: p note p4 --> <h4> <xsl:call-template name="anchor-text"/> </h4> <xsl:apply-templates/> </xsl:template> <xsl:template match="annexi//p4"> <!-- contents: p note p5 --> <h5> <xsl:call-template name="anchor-text"/> </h5> <xsl:apply-templates/> </xsl:template> <xsl:template match="annexi//p5"> <!-- contents: p note p6 --> <h6> <xsl:call-template name="anchor-text"/> </h6> <xsl:apply-templates/> </xsl:template> <xsl:template match="annexi//p6"> <!-- contents: p note --> <p> <xsl:call-template name="anchor-text"/> </p> <xsl:apply-templates/> </xsl:template> <xsl:template match="table"> <table> <xsl:choose> <xsl:when test='@frame="none"'/> <xsl:otherwise> <xsl:attribute name="border"/> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/> </table> </xsl:template> <xsl:template match="tabtitle"> <caption> <b> <xsl:element name="a"> <xsl:choose> <xsl:when test='ancestor::body'> <xsl:attribute name="name"> <xsl:text>#bot</xsl:text> <xsl:number level="any" count="table" from="body"/> </xsl:attribute> <xsl:text>Table </xsl:text> <xsl:number level="any" count="table" from="body"/> </xsl:when> <xsl:otherwise> <xsl:attribute name="name"> <xsl:text>#ant</xsl:text> <xsl:number level="multiple" count="annexi|table"/> </xsl:attribute> <xsl:text>Table </xsl:text> <xsl:number level="multiple" count="annexi|table" format="A.1 "/> </xsl:otherwise> </xsl:choose> &#8211; <xsl:value-of select="."/> </xsl:element> </b> </caption> </xsl:template> <xsl:template match="tgroup"> <xsl:apply-templates select="colspec"/> <xsl:apply-templates select="thead"/> <xsl:apply-templates select="tbody"/> <xsl:apply-templates select="tfoot"/> <tr> <td colspan="100"> <xsl:apply-templates select=".//tabnote" mode="note"/> </td> </tr> </xsl:template> <xsl:template match="colspec"> </xsl:template> <xsl:template match="thead"> <xsl:apply-templates/> </xsl:template> <xsl:template match="tbody"> <xsl:apply-templates/> </xsl:template> <xsl:template match="tfoot"> <xsl:apply-templates/> </xsl:template> <xsl:template match="row"> <tr> <xsl:choose> <xsl:when test='parent::thead or parent::tfoot'> <xsl:attribute name="bgcolor">#d0d0d0</xsl:attribute> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test='@valign'> <xsl:attribute name="valign"> <xsl:value-of select="@valign"/> </xsl:attribute> </xsl:when> <xsl:when test='parent::*[@valign]'> <xsl:attribute name="valign"> <xsl:value-of select="parent::*[@valign]"/> </xsl:attribute> </xsl:when> <xsl:when test='parent::thead'> <xsl:attribute name="valign">bottom</xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="valign">top</xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/> </tr> </xsl:template> <xsl:template match="entry"> <xsl:choose> <xsl:when test='ancestor::thead'> <xsl:call-template name="ent"> <xsl:with-param name="tag">th</xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="ent"> <xsl:with-param name="tag">td</xsl:with-param> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="ent"> <xsl:param name="tag"/> <xsl:element name="{$tag}"> <xsl:if test='@valign'> <xsl:attribute name="valign"> <xsl:value-of select="@valign"/> </xsl:attribute> </xsl:if> <xsl:if test='@align'> <xsl:attribute name="align"> <xsl:value-of select="@align"/> </xsl:attribute> </xsl:if> <xsl:if test='@morerows'> <xsl:attribute name="rowspan"> <xsl:value-of select="@morerows + 1"/> </xsl:attribute> </xsl:if> <xsl:if test='@namest and @nameend'> <xsl:call-template name="colspan"> <xsl:with-param name="namest" select="@namest"/> <xsl:with-param name="nameend" select="@nameend"/> </xsl:call-template> </xsl:if> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template name="colspan"> <xsl:param name="namest"/> <xsl:param name="nameend"/> <xsl:call-template name="colspan-sub"> <xsl:with-param name="numst"> <xsl:choose> <xsl:when test='parent::row/preceding-sibling::colspec[@colname=$namest]'> <xsl:value-of select="count(parent::row/preceding-sibling::colspec[@colname=$namest]/preceding-sibling::colspec)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="count(ancestor::tgroup/child::colspec[@colname=$namest]/preceding-sibling::colspec)"/> </xsl:otherwise> </xsl:choose> </xsl:with-param> <xsl:with-param name="numend"> <xsl:choose> <xsl:when test='parent::row/preceding-sibling::colspec[@colname=$nameend]'> <xsl:value-of select="count(parent::row/preceding-sibling::colspec[@colname=$nameend]/preceding-sibling::colspec)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="count(ancestor::tgroup/child::colspec[@colname=$nameend]/preceding-sibling::colspec)"/> </xsl:otherwise> </xsl:choose> </xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="colspan-sub"> <xsl:param name="numst"/> <xsl:param name="numend"/> <xsl:attribute name="colspan"> <xsl:value-of select="$numend - $numst + 1"/> </xsl:attribute> </xsl:template> <xsl:template match="tabnote"> </xsl:template> <xsl:template match="tabnote" mode="note"> <!-- contents: text() --> <xsl:text>NOTE </xsl:text> <xsl:choose> <xsl:when test='@number="nonum"'/> <xsl:otherwise> <xsl:if test='count(ancestor::table//tabnote) &gt; 1'> <xsl:number level="any" count="tabnote" from="table" format="1 "/> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/> <br/> </xsl:template> <xsl:template match="figure"> <div> <xsl:apply-templates/> <xsl:apply-templates select=".//fignote" mode="note"/> </div> </xsl:template> <xsl:template match="figtitle"> <div align="center"> <b> <xsl:element name="a"> <xsl:choose> <xsl:when test='ancestor::body'> <xsl:attribute name="name"> <xsl:text>#bof</xsl:text> <xsl:number level="any" count="figure" from="body"/> </xsl:attribute> <xsl:text>Figure </xsl:text> <xsl:number level="any" count="figure" from="body"/> </xsl:when> <xsl:otherwise> <xsl:attribute name="name"> <xsl:text>#anf</xsl:text> <xsl:number level="multiple" count="annexi|figure"/> </xsl:attribute> <xsl:text>Figure </xsl:text> <xsl:number level="multiple" count="annexi|figure" format="A.1 "/> </xsl:otherwise> </xsl:choose> &#8211; <xsl:value-of select="."/> </xsl:element> </b> </div> </xsl:template> <xsl:template match="fignote"> </xsl:template> <xsl:template match="fignote" mode="note"> <!-- contents: text() --> <xsl:text>NOTE </xsl:text> <xsl:choose> <xsl:when test='@number="nonum"'/> <xsl:otherwise> <xsl:if test='count(ancestor::figure//fignote) &gt; 1'> <xsl:number level="any" count="fignote" from="figure" format="1 "/> </xsl:if> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/> <br/> </xsl:template> <xsl:template match="xref"> <xsl:for-each select="id(@refid)"> <xsl:call-template name="xref-one"/> </xsl:for-each> </xsl:template> <xsl:template name="xref-one"> <xsl:choose> <xsl:when test='self::tabtitle'> <xsl:number level="any" count="table"/> </xsl:when> <xsl:when test='ancestor::body'> <xsl:number level="multiple" count="scope|refs|defs|h1|h2|h3|h4|h5|h6|p2|p3|p4|p5|p6" from="body" format="1.1 "/> </xsl:when> <xsl:otherwise> <xsl:number level="multiple" count="annexi|h1|h2|h3|h4|h5|h6|p2|p3|p4|p5|p6" format="A.1 "/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="inf"> <sub><xsl:apply-templates/></sub> </xsl:template> <xsl:template match="formula"> <xsl:apply-templates/> </xsl:template> <xsl:template match="dformula"> <dl><dd><xsl:apply-templates/></dd></dl> </xsl:template> <xsl:template match="fence"> <xsl:value-of select="@lpost"/> <xsl:apply-templates/> <xsl:value-of select="@rpost"/> </xsl:template> </xsl:stylesheet>