ESV Processing Instructions (PIs)
Informationen zur Verwendung von PIs in der Ausgabe.
Allgemeines
Processing Instructions (PIs) können verwendet werden, um einem verarbeitenden System Informationen zur Verwendung der Daten mitzuteilen, die sich nicht aus der XML-Struktur selbst ergeben. PIs werden im ESV z.B. verwendet, um Textbereiche als verändert zu markieren oder um bestimmte Effekte in einer Satzausgabe zu erzielen. Darüber hinaus werden in PIs auch Datumsangaben gespeichert, um nachvollziehen zu können, wann ein Verzeichnis generiert oder eine Leerraum-Normalisierung durchgeführt wurde.
PIs im ESV
EGX
<?egx_generiert datum="2016-10-21T09:57:24+0200"?>
Leerraum-Normalisierung
<?zuletzt-normalisiert 2017-05-22T15:16:33.422+02:00?>
Zeichen-Normalisierung
<?zuletzt-zeichennormalisiert 2022-06-23T6:43:23.422+02:00?>
Verzeichnisse
<?esv_generiert datum="2017-06-12T16:11:46.695+02:00"?>
Jahresinhaltsverzeichnis
Das Jahresinhaltsverzeichnis gibt alle Beiträge sortiert nach Rubrik aus. Default-Sortierung ist Dokumentreihenfolge.
Ist eine spezielle Sortierung gewünscht, kann wie folgt vorgegangen werden:
- (beliebige) Heftrahmendatei (des betreffenden Jahres) öffnen
- zu jeder Rubrik im Text-Element eine Processing Instruction 'esv_jiv_sort' mit einem numerischen Wert angeben
- je kleiner der Wert, desto weiter vorne sortiert die jeweilige Rubrik (Wert 1 sortiert vor Wert 2 usw.)
- pro Rubrik reicht eine PI (auch wenn Rubriken mehrfach als Abschnitt vorhanden sind, z.B. bei News)
- sollen Beiträge einer bestimmten Rubrik gar nicht ausgegeben werden, wird der Wert 0 eingetragen
Beispiel:
<abschnitt.meta>
<titel>
<titel.standard>
<text>Law Report<?esv_jiv_sort 2?></text>
</titel.standard>
</titel>
</abschnitt.meta>
Geteilte Beiträge in Zeitschriften
<?esv_split … ?>
Zur Kennzeichnung von Anschlüssen wird die PI <?esv_split?> verwendet. Bei einem fortsetzenden Beitrag wird die PI vor das erste Zeichen des ersten Textelements gesetzt, und bei einem Beitrag, der mittendrin aufhört und später fortgesetzt wird, wird die PI hinter das letzte Zeichen des letzten Textelements gesetzt:
Eine Instanz besitzt einen nachfolgenden Teil:
Folgende PI mit dem Attributwert von
esv.instanz/@iddes Nachfolgers als Pseudo-Attributid_followingwird gesetzt.<?esv_split id_following=stbp_2015_b0012_ritzrow_t2?>Eine Instanz besitzt einen vorangegangenen Teil:
Folgende PI mit dem Attributwert von
esv.instanz/@iddes Vorgängers als Pseudo-Attributid_precedinggesetzt.<?esv_split id_preceding=stbp_2015_b0012_ritzrow_t1?>Nur auf besondere Anforderung können auch weitere Pseudoattribute gesetzt werden:
<?esv_split heftbeginn="2" ebenenfortsetzung="true" id_preceding=stbp_2015_b0012_ritzrow_t1?>
XML-Last: sollte die Datei nicht wohlgeformt sein, da z.B. direkt in Ebenen geschnitten wurde, müssen zwingend sämtliche ancestor-or-self-Ebenen(-titel) wiederholt werden. Dies ist für die StBP so ausgezeichnet worden (durch Datenanpassung April 2021).
XML-First: Es müssen zwingend sämtliche ancestor-or-self-Ebenen(-titel) wiederholt werden.
Interner Verlinker
<?esv_verlinker_abschnitt_kapsel?>
- kann direkt unterhalb von Element abschnitt gesetzt werden
- (nur) die ESV-Interne Verlinkung berücksichtigt die PI: Jeder so gekapselte (Rahmen-)Abschnitt wird in sich gekapselt verlinkt (nur innerhalb der Kapsel wird nach Zielen gesucht)
- erforderlich, wenn Ziele, auf die verlinkt werden soll, mehrfach gleichlautend im Werk vorkommen
- Use Case: KR
Sonstige (nur für interne Prozesse)
<?esv_auto_inkrafttreten?>
= durch einen Datenabgleich automatisch ergänztes Inkrafttreten-Datum
<?esv_ausgelassene_seitenbeginne 2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18?>
= für Prüftool
<?esv_legacy_auszug?>
= Zitat-Container, die früher vom Typ Auszug waren; zur Unterscheidung vom sonstigen Zitat; Information wird in Rückkonvertierung verarbeitet
Allgemeine Zeichen für den Satz
<?esv_table width="75%"?>
= Breite der Tabelle im Verhältnis zum Satzspiegel; zu benutzen vor betreffender tgroup.
<?esv_keep_together?>
Steht zwischen zwei Block-Elementen, die zusammengehalten werden sollen (= kein Seitentrenner erlaubt). Kann verwendet werden, um Elemente zusammenzuhalten, die nicht über übliche Satzregeln zusammengehalten werden (können), zum Beispiel zwischen zwei Tabellenzeilen.
<?esv_satz variante="frei-wählbar"?>
Feste PI mit variabel zu füllendem Pseudo-Attribut, zur Verwendung für allgemeine Satz-Dinge mit Pseudo-Attribut @variante. Der Attributwert ist frei wählbar und muss für den jeweiligen Satzdienstleister beim Template dokumentiert werden. Eine Dokumentation in den AAA ist nicht notwendig, die Werte sind nur relevant für den speziellen Anwendungsfall XML-First-Print.
Beispiele:
<?esv_satz variante="kurzbeitrag"?>
<?esv_satz variante="news-recht"?>
Besondere Zeichen für den Satz
<?esv_linebreak?>
= Zeilenumbruch erzwingen (für rein typographisch erforderliche harte Umbrüche, ergänzend zu "semantischem Element" zeilenumbruch für weiche Zeilenumbrüche
<?esv_pagebreak?>
= erzeugt einen Seitenwechsel
Zur Steuerung des Umbruchs bzw. Erzwingen einer Trennung oder Zusammenhaltung zwischen zwei Buchstaben existieren folgende PIs (Beschluss 22.08.2017):
<?esv_joiner?>
= Trennung an dieser Stelle verhindern
<?esv_non-joiner?>
= Trennung an dieser Stelle ermöglichen
Ein Anwendungsfall:
Wort1/<?esv_non-joiner?>Wort2
Index-Manager
<?esv_index-manager-bearbeitet datum="2017-11-24T11:23:56.939+01:00"?>
Diff
<?tl_insert_start author="esv-diff"?>
<?tl_insert_end?>
<?tl_delete_start author="esv-diff"?>
<?tl_delete_end?>
Oxygen
<?oxy_insert_start author="AUTOR" timestamp="TIMESTAMP"?>
<?oxy_insert_end?>
<?oxy_delete timestamp="TIMESTAMP" content="CONTENT" author="AUTOR"?>
<?oxy_attributes ATTRIBUTNAME="<change type="modified|removed" oldValue="ALTER_WERT" author="AUTOR" timestamp="TIMESTAMP" />"?>
Besondere Zeichen für den Umbruch und Satz
Vorsicht bei exotischen Zeichen in Unicode, welche nur zum Steuern des Satzes benötigt werden. Diese sorgen immer wieder für Probleme und können auch nicht von allen Dienstleistern umgesetzt werden.
Verbotene Zeichen
Diese Zeichen dienen der Ligaturensteuerung und nicht dem Zeilenumbruch:
U+200C (zero width non-joiner)
U+200D (zero width joiner)
Weiterführende Informationen zu PIs
Quelle: Pagina
Processing Instructions (PI), zu Deutsch Verarbeitungsanweisungen, dienen dazu, Informationen zur Verarbeitung der Daten zu geben, die weder aus der Struktur noch den Elementnamen oder Attributen entnommen werden können.
PIs sind also ein Teil von XML, der überall dort benötigt wird, wo das Grundprinzip von XML – die medienunabhängige, systematisch-regelbasierte Kodierung von Inhalten – durchbrochen werden muss. PIs sind sozusagen das »subversive Element« in XML. In der Regel werden sie daher nur für einen bestimmten Arbeitsschritt verwendet und später wieder entfernt.
PIs dürfen überall im XML-Dokument verwendet werden, nur nicht innerhalb von Tags. Sie stehen zwischen den Begrenzungszeichen <? und ?>. Zwischen diesen Begrenzungszeichen kann sich beliebiger Text befinden. Allerdings darf eine PI nicht mit der Zeichenfolge xml beginnen, und natürlich dürfen auch die Begrenzungszeichen selbst nicht als Text in der PI auftreten. Normalerweise ist aber der formale Aufbau einer PI ähnlich dem Aufbau eines Elements: Nach dem Anfangsbegrenzer <? folgt unmittelbar die Angabe des betroffenen Verarbeitungsbereichs oder der Software, die die PI auswerten soll, darauf folgen die eigentlichen Verarbeitungsanweisungen in Attributform.
<?satzausgabe zeileninfo=“spatien90%“?>
Diese Beispiel-PI gibt für den Verarbeitungsbereich satzausgabe an, dass in der Zeile, in der sie steht, die Leerräume nur 90 % des vorgegebenen Minimal-Wertes breit sein sollen. Sie bezieht sich also auf eine konkrete Ausgabeform, nämlich den Satz und hier den konkret erreichten Umbruch. Die Angabe könnte etwa notwendig sein, um die Ausgangszeile eines Absatzes einzubringen. Daher wird die Spatienweite in der vorangehenden Zeile so manipuliert, dass ein unschöner Umbruch vermieden wird.
Diese Information ist natürlich nur in einem bestimmten Absatz und nur beim manuellen Feinumbruch für eine bestimmte Satzausgabe relevant, kann also nicht aus der Struktur, den Elementnamen oder Attributen entnommen werden. Die PI ist weder für den Inhalt noch für andere Verwertungen der Daten (CD-ROM, Internet) nötig. Nach Abschluss der Satzarbeiten und der Rückübernahme der XML-Daten in das Verlagssystem werden derartige PIs über einen Automatismus entfernt.
In der Realität sehen PIs eher kryptisch aus, da sie meist nur den Namen des Ausgabeprogramms und für dieses bestimmten Code enthalten. So etwa die folgende Anweisung, die dafür sorgt, dass das Werksatzprogramm TUSTEP an dieser Stelle einen festen Zeilenumbruch ausführt:
<?TUSTEP code="$$$" ?>
Für die Einschränkung, dass eine PI nicht mit der Zeichenfolge xml beginnen darf, gibt es einen guten Grund: Diese Zeichenfolge ist für PIs reserviert, die XML als solches betreffen. Die sogenannte XML-Deklaration am Anfang jeder XML-Datei ist formal eine PI. Sie zeigt dem verarbeitenden System an: bei der nachfolgenden Datei handelt es sich um ein XML-Dokument einer bestimmten XML-Version, mit oder ohne DTD und einer bestimmten Zeichenkodierung:
<?xml version="1.0" standalone="yes" encoding="ansi"?>
Auch weitere Angaben zur Verarbeitung eines XML-Dokumentes, so die Information, dass für die Darstellung eine bestimmte Stilvorlage (Stylesheet) in einem bestimmten Format vorliegt, werden dem XML-Dokument in Form einer im XML-Standard festgelegten PI mitgegeben:
Diese XML-Standard-PI gibt dem verarbeitenden System an, dass ein Stylesheet des Typs CSS in der Datei buch.css zur Verfügung steht. Stylesheets enthalten Informationen darüber, wie XML-Elemente ausgegeben werden sollen. So könnte ein Stylesheet für das Element <wichtig> festlegen, dass der Content dieses Elementes auf dem Bildschirm rot blinkend, bei der Druckausgabe fett und bei der Sprachausgabe besonders laut wiedergegeben wird. Bei der Verwendung von PIs sollte man immer beachten, dass sie niemals Elemente ersetzen dürfen und dass sie ohne jeden Verlust für Inhalt und Strukturierung des Dokuments gelöscht werden können.
