Das Nationale Prüfprofil für NISO STS (Normen-XML)

Gerrit Imsieke (@gimsieke@mastodon.cloud),
le-tex publishing services (@letexml@fosstodon.org)

transpect User Group 2024

https://subversion.le-tex.de/common/presentations/2024-11_trug_Pruefprofil/index.html

NISO STS

  • XML-Vokabular für Normendokumente
  • Derivat von JATS
  • Standardisiert bei National Information Standards Organisation (innerhalb von ANSI für IT-Standards in USA zuständig)
  • Version 1.2 im November 2022 veröffentlicht

NISO STS

  • Wie JATS ist NISO STS “enabling, not prescriptive” (B. Tommie Usdin)
  • Viele Dinge können unterschiedlich kodiert werden, z.B. Bild- oder Formellegenden (Symbolerklärungen)

Beispiel

Annex B.1 of ISO 1463:2003(en). It includes an equation with a where-list and a figure with a legend (and a so-called figure footnote,
            which is a legend item with lower-alpha numbering)

ISOs und IECs unterschiedliche Ansätze für Bildlegenden

NISO STS 1.0 IEC/ISO Coding Guidelines

ISO

<fig id="fig_B.1">
  <label>Figure B.1</label>
  <caption>
    <title>Deviation of the cross-section by the angle <italic>α</italic></title>
  </caption>
  <graphic xlink:href="fig_B.1" xlink:type="simple"/>
  <table-wrap content-type="fig-index">
    <caption>
      <title>Key</title>
    </caption>
    <table width="325">
      <colgroup>
        <col align="left" valign="top" width="10%"/>
        <col align="left" valign="top" width="90%"/>
      </colgroup>
      <tbody>
        <tr>
          <td>1</td>
          <td>coating surface</td>
        </tr>
        <tr>
          <td>2</td>
          <td>section</td>
        </tr>
      </tbody>
    </table>
  </table-wrap>
  <fn-group>
    <fn>
      <label>
        <sup>a</sup>
      </label>
      <p>Direction of observation</p>
    </fn>
  </fn-group>
</fig>

IEC

<fig id="fig_B.1">
  <label>Figure B.1</label>
  <caption>
    <title>Deviation of the cross-section by the angle <italic>α</italic></title>
  </caption>
  <graphic xlink:href="fig_B.1" xlink:type="simple"/>
  <def-list list-content="figure">
    <label>Key</label>
    <def-item>
      <term>1</term>
      <def>
        <p>coating surface</p>
      </def>
    </def-item>
    <def-item>
      <term>2</term>
      <def>
        <p>section</p>
      </def>
    </def-item>
  </def-list>
  <fn-group>
    <fn>
      <label>
        <sup>a</sup>
      </label>
      <p>Direction of observation</p>
    </fn>
  </fn-group>
</fig>

Kreatives Legendentagging bei anderen Normeninstituten

Legendentitel fett in verbundenen Tabellenzellen:

<fig>
  <label>Bild 3</label>
  <caption>…</caption>
  <graphic xlink:href="…"/>
  <array>
    <table>
      <colgroup>…</colgroup>
      <tbody>
        <tr>
          <td colspan="2">
            <p><bold>Legende</bold></p>
          </td>
        </tr>

Kreatives Legendentagging bei anderen Normeninstituten

Es wird wild (wahrscheinlich schlechte Konvertierung aus Word):

<fig id="fig-na.f.1">
  <label>Bild NA.F.1</label>
  <caption>…</caption>
  <graphic xlink:href="…"/>
  <def-list list-type="key">
    <title specific-use="Legende"><bold>Legende</bold></title>
  </def-list>
  <table-wrap>
    <table border="0" frame="void">
      <col span="1" width="50.00625315mm"/>
      <col span="1" width="122.00820213mm"/>
      <tbody>[Symbole physikalischer Größen mit Berechnungsformeln]</tbody>
    </table>
  </table-wrap>
</fig>
<p>Dabei ist</p>
<def-list><!-- Legende für die Symbole in den Berechnungsformeln -->
  <def-item>
    <term><italic>N</italic><sub>max</sub></term>
    <def>…</def>
  </def-item>
  …
</def-list>

NISO STS 1.2

  • In NISO STS 1.2 gibt es einen legend-Container für Bilder, Formeln und andere Objekte.
  • Nach einer optionalen Überschrift dürfen Definitionslisten, Tabellen und normale Absätze enthalten sein
  • Die Legende ist im jeweiligen Objekt enthalten und steht nicht dahinter

⇒ Konsistenz, Prescription

Weiteres Beispiel: Formellegenden in freier Wildbahn

<p style-type="indent"><italic>d</italic> = <italic>d</italic>′ cos<italic>α</italic></p>
<p>where</p>
<array>
  <table width="650">
    <colgroup>
      <col align="left" valign="top" width="10%"/>
      <col align="left" valign="top" width="90%"/>
    </colgroup>
    <tbody>
      <tr>
        <td><italic>d</italic></td>
        <td>is the coating thickness when <italic>α</italic> = 0;</td>
      </tr>
      …

Formellegenden, ISO/IEC style

<disp-formula><italic>d</italic> = <italic>d</italic>′ cos<italic>α</italic></disp-formula>
<def-list list-content="formula">
  <label>where</label>
  <def-item>
    <term><italic>d</italic></term>
    <def>
      <p>is the coating thickness when <italic>α</italic> = 0;</p>
    </def>
  </def-item>
  … 
</def-list>

Formellegenden als legend

<disp-formula><italic>d</italic> = <italic>d</italic>′ cos<italic>α</italic>
  <legend>
    <title>where</title>
    <def-list>
      <def-item>
        <term><italic>d</italic></term>
        <def><p>is the coating thickness when <italic>α</italic> = 0;</p></def>
      </def-item>
      …
    </def-list>
  </legend>
</disp-formula>

Ziel: Interoperabilität beim XML

Einzelne nationale Normeninstute sind federführend bei der Entwicklung von europäischen und ISO-Normen

Für EN und ISO-Normen soll das national entwickelte XML verwendet werden

Wenn diese internationalen Normen dann wieder in nationale überführt werden (“adoptions”), soll ebenfalls das dann internationale XML verwendet und mit nationalem Vorwort und Anhang versehen werden

Probleme bei Interoperabilität

  • Schlecht kodierter Input
  • Unterschiedliche STS-Konventionen bei den Normeninstituten
    (z.B. IDs: fig-C.3, fig_c.3, figuur_C-3, …)
    • Uneinheitlicher Input
    • Unterschiedliche Output-Anforderungen

Lösungsansatz: Prüfprofil

  1. Schematronprüfung → Fehler
  2. Falls automatisch behebbar: Autokorrektur der gefundenen Fehler mit XSLT
  3. erneute Schematronprüfung → weniger Fehler

als XProc-Pipeline orchestriert, unter Verwendung weniger transpect-Module

Schichtenansatz

  • zentrale Schematron- und XSLT-Regeln in STS4i
  • Nationales Prüfprofil DE_baseline.sch
  • darauf aufbauende Prüfprofile, die VDE- und DIN-Konventionen durchsetzen (z.B. bzgl. IDs)

Demo

Ausschnitt aus einem Fehlerreport mit einigen gemeldeten Fehlern und Warnungen. Ein Fehler bzgl. eines unerwarteten Namespace-Prefix’ und zwei Fehler wegen fehlenden Release-Dates auf zwei Adoption-Ebenen werden gezeigt. Zwei der Fehler konnten autokorrigiert werden

Ausblick

  • Prüfprofil für OSD (neue gemeinsame STS-Konventionen von ISO, IEC und vielen anderen Instituten, incl. DIN)
  • Autokorrektur für Datei- und Verzeichnisnamen und Bildformate (geht nicht mit XSLT, das werden XProc-Autokorrekturen)
  • Überführung der STS-spezifischen XProc-Orchestrierungs-Pipeline von STS4i in ein allgemeines transpect-Modul
  • dabei Migration auf XProc 3 (endlich!)