Mit den Types wird festgelegt, wie sich Artikel zusammensetzen (Articles, Sections, Items), welche Kategoriensysteme es gibt (Properties) und welche Annotationen (Links) und Apparate (Footnotes) möglich sind.

Articles

Ein Artikel beschreibt ein Objekt. In der Konfiguration wird angegeben, wie ein Artikel in der Einzelansicht und in der tabellarischen Ansicht dargestellt werden soll. Zudem wird festgelegt, welche Abschnitte ein neuer leerer Artikel enthält:

 

SchlüsselBeschreibung
headerWie setzt sich die Titelzeile der Artikelansicht zusammen? Eine Liste mit Definitionen der Kopfzeileneinträge in der Einzelartikelansicht.
columnsWelche Spalten sollen in der Artikelliste angezeigt werden können? Eine Liste mit Definitionen der Tabellenspalten.
sectionsWelche Abschnitte kann ein Artikel enthalten? Eine benannte Liste mit Abschnittsdefinitionen. Aus dieser Liste wird beim Erstellen eines Artikels ein leerer Artikel erstellt. 
namespacesWelche Namensräume werden in den norm_data-Feldern verwendet? Das Objekt enthält als Schlüssel den Namespace, zum Beispiel "urn" und als Wert ein Objekt mit den Schlüsseln button und baseurl. Die baseurl enthält die Auflösung des Namespace (z.B. https://nbn-resolving.de/urn:). Wenn ein Button erzeugt werden soll, wird im button-Schlüssel die Beschriftung des Buttons angegeben. 
pipelinesWelche Pipelines werden über einen Button verlinkt? Das Objekt enthält als Schlüssel die Button-Bezeichnung und als Wert den Namen der Pipeline.

 

Die Definition der Tabellenspalten enthält:

SchlüsselBeschreibung
nameEindeutige Bezeichnung des Feldes. Diese Bezeichnung wird in Abfragen in den Query-Parametern verwendet.
keySchlüssel zum Extrahieren der Daten aus dem Artikel.
captionÜberschrift in der Tabelle
aggregateAggregationsfunktion, wenn mehrere Werte zusammengefasst werden müssen (min, max, count
sortDefiniert, welche Tabelle für die Sortierung gejoint wird (table, type), welches Feld verwendet wird (field) und inwiefern mehrere Einträge in der Tabelle aggregiert werden (aggregate). Der aggregate-Schlüssel kann die Werte "min", "max" und "count" annehmen.

Die Definition der Abschnitte bestimmt sowohl die Reihenfolge als auch die Hierarchie:

SchlüsselBeschreibung
typeAbschnittstyp
captionName des Abschnitts (optional)
parentSchlüssel des übergeordneten Abschnitts, um eine Hierarchie herzustellen (optional)
weightGewichtung des Abschnitts in der Einzelartikelansicht. Positive Gewichte verschieben den Abschnitt nach unten, negative Gewichte nach oben (optional)

Damit die Gewichtung umgesetzt werden kann, müssen die Schlüssel der Abschnitte dem Abschnittstyp entsprechen. Liegen mehrere Abschnitte vom gleichen Typ vor, kann über den Namen weiter differenziert werden. Dazu wird der Schlüssel nach folgendem Schema gebildet: <sectiontype>[<sectionname>]. Beispiel, um Abschnitte mit dem Typ "text" und dem Namen "Beschreibung" nach oben zu ziehen:

"text[Beschreibung]": {
  "type": "text",
  "caption": "Beschreibung",
  "weight": -6
 }

 

Sections

Ein Abschnitt gruppiert die Inhalte eines Artikels. Abschnitte sind hierarchisch angeordnet und jeder Abschnitt enthält ein Notizfeld. In der Konfiguration wird angegeben:

SchlüsselBeschreibung
sectionsWelche Unterabschnitte sind vorgesehen (sectiontypes)?
itemsWelche und wie viele Einträge enthält ein Abschnitt (itemtypes)?
fieldsWelche Annotationen sind im Notizfeld möglich? In fields.comment.types wird dazu eine Liste von linktypes angegeben.
prefixPräfix bei der Bezeichnung des Abschnittes.
showpathSoll in der Beschriftung der ganze Pfad dargestellt werden, das heißt die Bezeichnungen übergeordneter Abschnitte? (true | false; default = false)
viewWie wird der Abschnitt dargestellt? Zu den Möglichkeiten siehe unten.
displaySoll der Abschnitt ausgeblendet werden (false)? Soll der Abschnitt hervorgehoben werden (highlight)? Enthält der Abschnitt Zusatzinformationen und soll kleiner dargestellt werden (addendum)?

Darstellungsmöglichkeiten

Die folgenden Werte sind im view-Schlüssel eines Sectiontype möglich:

SchlüsselBeschreibung
table

Die Einträge werden tabellarisch aufgelistet, wobei sich die Spaltennamen aus der Felddefinition der Einträge ergeben. Diese Darstellung wird eingesetzt, um Kategorien mit Ergänzungen zu erfassen. Beispiel: eine Liste zitierter Literatur, in der die Titel in einer Spalte und die konkreten Seitenzahlen in einer weiteren Spalte erfasst werden. 

Für jeden Eintragstyp wird eine eigene Tabelle gebildet. Die Spalten der Tabelle ergeben sich aus den in der Item-Konfiguration angegebenen Feldern. Sind Einträge mit Bildern vorhanden (die auch auf dem Server liegen), dann wird vor der Tabelle eine Kachelansicht aller Bilder angezeigt. 

stackDie Felder der Einträge werden untereinander aufgelistet, so dass für jedes Feld möglichst viel Platz zur Verfügung steht. Diese Darstellung eignet sich zum Beispiel für größere Textfelder. Auf diese Weise können auch eine Transkription, Übersetzung, Quellenangabe und Datierung eines Textes untereinander angezeigt werden.
gridDie Einträge werden in einem Gitter angezeigt. Die Größe des Gitters wird im Abschnitt erfasst (section.layout_cols, section.layout_rows). Jeder Eintrag wird dann in diesem Gitter positioniert, wobei in einer Zelle auch mehrere Einträge gestapelt werden können (items.pos_x, items.pos_y, items.z). Diese Form der Darstellung eignet sich beispielsweise, um die Position von Wappen auf einem Objekt zu erfassen. Die Zählung der Positionen beginnt bei 1. 
tilesDie Einträge werden als Kacheln dargestellt. Die Kachelansicht eignet sich zur Darstellung von Kategorien mit Bildern (properties.file) - die Bilder werden in einer Kachel links und die anderen Felder rechts ausgegeben.

Items

Items enthalten die Inhalte eines Artikels. Je nach Type enthält ein Item unter anderem Texte, Kategorien, oder Dateien. Dazu wird angegeben, welche Felder der Datenbank für ein Item verwendet werden.

SchlüsselBeschreibung
fieldsWelche Felder des Eintrags werden genutzt? Siehe unten zur Feldkonfiguration.
displaySoll der Eintrag ausgeblendet werden (false)? Soll der Eintrag hervorgehoben werden (highlight)? Ist der Eintrag eine Zusatzinformation, die kleiner dargestellt werden soll (addendum)?
editIst der Inhalt bearbeitbar? (true | false; default = true)

Feldkonfiguration

Die Feldkonfiguration umfasst im einfachsten Fall eine Liste mit Feldnamen als Schlüssel und Beschriftungen als Werten. Sollen weitere Eigenschaften konfiguriert werden, kann als Wert ein Objekt mit folgenden Schlüsseln angegeben werden:

SchlüsselBeschreibung
captionBeschriftung des Feldes.
showcaptionSoll die Beschriftung angezeigt werden (true | false)?
displaySoll das Feld ausgeblendet werden (false)? Soll das Feld hervorgehoben werden (highlight)? Ist das Feld eine Zusatzinformation, die kleiner dargestellt werden soll (addendum)? 
format

Wenn der Inhalt eines Feldes etwas anderes als eine Zeichenkette umfasst, wird das Format angegeben:

  • xml
  • json
  • property [Standard bei Property-Feldern]
  • date
  • file
templateBei JSON-Feldern wird standardmäßig eine Tabelle ausgegeben. Eine kompakte Liste wird mit dem Template "list" erzeugt.
types

In XML-Feldern: Welche Annotationen sind erlaubt? Es wird eine Liste der Link-Namen oder der Link-Kategorien angegeben.

In Property-Feldern: Welche Art von Eigenschaften wird verlinkt? Der Name des Propertytyps wird als Zeichenkette angegeben.

Properties

Die Kategoriensystem werden in den Properties erfasst. Jeder Propertytype entspricht einem eigenständigen Kategoriensystem.

Links & Footnotes

Die möglichen Annotationen und Anmerkungsapparate werden beide über Linktypen konfiguriert:

  • Annotationen zeichnen eine Textstelle mit einem Tag aus. Dabei kann es sich unter anderem um die Kennzeichnung kursiver Texte, die Kennzeichnung von Worttrennern oder verlorener Textteile, um Verweise auf Literatur oder andere Kategorien handeln. Jedes Tag kann weitere Attribute enthalten und auf Kategorien (properties) verweisen. 
  • Apparate in der Form von Fußnoten enthalten weiteren Text zu einer Textstelle.

Annotationen und Apparate werden in der Datenbank über XML-Tags erfasst und zur Darstellung auf der Seite in HTML-Tags umgewandelt. Die Linkkonfiguration enthält Angaben dazu, wie diese Links dargestellt und wie die Buttons in der Werkzeugleiste gestaltet werden:
 

SchlüsselBeschreibung
shortcutShortcut zum Einfügen der Annotation.
toolbuttonSoll in der Werkzeugleiste ein Toolbutton angezeigt werden (true oder false)?
tag_type

Wie wird das Tag bei der Ausgabe dargestellt?

  • text: Ein alleinstehendes Tag. Die Werte der Schlüssel html_prefix, html_content und html_postfix werden zusammengefügt und ausgegeben, zum Beispiel ein festgelegtes Symbol für Worttrenner.
  • format: Der Text wird formatiert, zum Beispiel kursiviert.
  • bracket: Der Text wird geklammert. Vor dem Text wird dazu Der in html_prefix angegebene Wert ausgegeben, nach dem Text der Wert aus html_postfix.
  • attribute: Ein alleinstehendes Tag. Der Inhalt des Tags wird aus dem in attr_name angegebenen Attribut ausgelesen, zum Beispiel um URLs auszugeben. Wie bei text-Tags werden dem Inhalt die Angaben aus html_prefix und html_postfix vorangestellt bzw. angehängt.
  • data: Ein alleinstehendes Tag. Der Inhalt des Tags wird aus der Datenbank ausgelesen. Aus welchem Datensatz der Inhalt ausgelesen wird, ist in der Links-Tabelle in den Feldern to_tab  (Tabelle) und to_id  (Datensatz innerhalb der Tabelle) festgelegt. Hiermit kann auf andere Artikel, Abschnitte oder auf Eigenschaften verwiesen werden.
  • counter: Ein alleinstehendes Tag mit einem Zähler. Bei der Ausgabe des Artikels wird der Zähler bei jedem Auftreten des in tag_name angegebenen XML-Tags hochgezählt. So können etwa nummerierte Fußnoten ausgegeben werden.
  • break: Es handelt sich um einen Zeilenumbruch, der in ein br-Tag umgewandelt werden soll.
tag_renderer

Optionale Angaben zur Ausgabe der Tags, abhängig von der Art des Tags:

  • repeat: Bei Attribut-Tags wird der Wert in html_content so oft ausgegeben, wie im Attribut angegeben. Das Attribut muss dazu eine Zahl enthalten.
  • link: Bei Atttribut-Tags wird ein Link erzeugt. Der Linktext sollte im Attribut "value" enthalten sein, die URL im Attribut "href".
  • numeric: Bei Counter-Tags wird eine Zahl ausgegeben.
  • alphabetic: Bei Counter-Tags wird ein Buchstabe ausgegeben.
attr_nameBei Attribut-Tags der Name des Attributs.
attr_defaultBei Attribut-Tags der Standardwert, wenn das Attribut nicht vorhanden ist oder wenn das Attribut bei Verwendung des repeat-Renderers den Wert 0 enthält.
html_tag

Die XML-Tags werden für die Anzeige auf der Webseite in HTML-konforme Tags konvertiert. Das Feld gibt an, welches HTML-Tag verwendet werden soll. In der Regel sollten alle XML-Tags in span-Tags konvertiert werden, eine Differenzierung der span-Tags kann über Klassen erfolgen. 

Jedes konvertierte Tag erhält die Klasse xml_tag. Zusätzlich wird jedes Tag mit einer Klasse nach dem Schema "xml_tag_<name>" versehen. Wenn das XML-Tag zum Beispiel "wtr" heißt, wird nach der Transformation die Klasse "xml_tag_wtr" vergeben. 

Format-Tags erhalten zusätzlich die Klasse xml_format.

Bracket-Tags werden in drei Tags konvertiert. Die öffnende Klammer erhält die Klasse xml_bracket_open, die schließende Klammer die Klasse xml_bracket_close und der enthaltende Text die Klasse xml_bracket_content.

html_prefix

Bei Bracket-Tags der für die öffnende Klammer verwendete Wert.

Bei Text-Tags wird dieser Wert dem in html_content festgelegten Wert vorangestellt.

html_contentBei Text-Tags wird dieser Werte bei der Konvertierung zu HTML innerhalb des Tags ausgegeben. So können zum Beispiel Worttrenner durch einen Mittelpunkt dargestellt werden.
html_postfix

Bei Bracket-Tags der für die schließende Klammer verwendete Wert.

Bei Text-Tags wird dieser Wert an den in html_content festgelegten Wert angehängt.

css_styleCSS-Angaben, die in die Webseite eingebettet werden, um das Tag zu gestalten. Die CSS-Angaben können sich auf die Klassen der konvertierten Tags beziehen (siehe die Konfiguration von html_tag).
link

Wenn das Tag auf einen anderen Datensatz verweist, dann muss dies im link-Schlüssel angegeben werden. Folgende Werte sind möglich:

  • properties: Das Tag verweist auf eine Eigenschaft, beispielsweise um die Art des Tags zu spezifizieren. Bei Worttrennern wird so etwa der Typ des Worttrenners verlinkt. Zusätzlich muss im Schlüssel properties angegeben werden, auf welchen Teilbereich der properties verlinkt werden soll. 
  • footnotes: Das Tag verweist auf eine Fußnote. Zusätzlich muss im Schlüssel footnotes angegeben werden, auf welchen Fußnotentyp (Feld fntype in der footnotes-Tabelle) verwiesen wird. 
  • external: Das Tag verweist auf einen anderen Artikel, einen Abschnitt innerhalb eines anderen Artikels oder auf eine Fußnote in einem anderen Artikel.
  • internal: Das Tag verweist auf einen Abschnitt oder eine Fußnote innerhalb des Artikels (d.h. innerhalb des Artikels, zu dem der Link gehört).

Im Fall von properties, internal und external befindet sich der zugehörige Datensatz in der links-Tabelle (Felder from_tab, from_id, from_field, from_tagname, from_tagid). In der Links-Tabelle jeweils in den Feldern link_tab und link_id angegeben, auf welche Tabelle (properties, articles, sections, footnotes) und welchen Datensatz innerhalb der Tabelle verwiesen wird.       

Im Fall von footnotes findet sich der dazugehörige Datensatz in der footnotes-Tabelle (Felder from_tab, from_id, from_field, from_tagname, from_tagid).

Achtung: nicht mit dem links-Schlüssel (Plural) verwechseln.

targetsWenn das Tag auf einen anderen Datensatz verweist, werden die Tabelle und darin die erlaubten Typen angegeben. Targets ist ein Objekt mit dem Tabellennamen als Schlüssel und einem Array der Typen (z.B. aus den propertytypes oder den sectiontypes.).
links

Fußnoten können im content-Feld XML-Text enthalten. Analog zur Feldkonfiguration für Items, wird im links-Schlüssel festgelegt, welche Links und damit Tags erlaubt sind. 

Achtung: nicht mit dem link-Schlüssel (Singular) verwechseln.

Eine besondere Behandlung erfahren Umbrüche. Umbrüche werden im Editor mit Shift+Enter erzeugt. Sie werden in XML als leere nl-Tags gespeichert und im HTML als alleinstehende br-Tags ausgegeben. In den Types muss dafür ein nl-Link angelegt und wie folgt konfiguriert sein:

{
   "tag_type": "break",
   "toolbutton": false
} 

Sollen Umbrüche in einem Feld möglich sein, dann muss das nl-Tag in der Feldkonfiguration im types-Schlüssel aufgeführt werden.