From f9ee01c58184b4f8154719b7b769e41f924e3ae6 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 18:23:51 +0200 Subject: [PATCH 01/19] Added example files for CLAUDE to read --- CLAUDE/XML_1764-beitraege.txt | 627 ++++++++++++++++++++++++++++++++++ CLAUDE/XML_1764-stuecke.txt | 124 +++++++ CLAUDE/XML_akteure.txt | 58 ++++ CLAUDE/XML_kategorien.txt | 131 +++++++ CLAUDE/XML_orte.txt | 76 +++++ CLAUDE/XML_werke.txt | 94 +++++ CLAUDE/XSD_KGPZ.txt | 14 + CLAUDE/XSD_akteure.txt | 95 ++++++ CLAUDE/XSD_beitraege.txt | 114 +++++++ CLAUDE/XSD_common.txt | 354 +++++++++++++++++++ CLAUDE/XSD_kategorien.txt | 55 +++ CLAUDE/XSD_orte.txt | 72 ++++ CLAUDE/XSD_stuecke.txt | 79 +++++ CLAUDE/XSD_werke.txt | 87 +++++ 14 files changed, 1980 insertions(+) create mode 100644 CLAUDE/XML_1764-beitraege.txt create mode 100644 CLAUDE/XML_1764-stuecke.txt create mode 100644 CLAUDE/XML_akteure.txt create mode 100644 CLAUDE/XML_kategorien.txt create mode 100644 CLAUDE/XML_orte.txt create mode 100644 CLAUDE/XML_werke.txt create mode 100644 CLAUDE/XSD_KGPZ.txt create mode 100644 CLAUDE/XSD_akteure.txt create mode 100644 CLAUDE/XSD_beitraege.txt create mode 100644 CLAUDE/XSD_common.txt create mode 100644 CLAUDE/XSD_kategorien.txt create mode 100644 CLAUDE/XSD_orte.txt create mode 100644 CLAUDE/XSD_stuecke.txt create mode 100644 CLAUDE/XSD_werke.txt diff --git a/CLAUDE/XML_1764-beitraege.txt b/CLAUDE/XML_1764-beitraege.txt new file mode 100644 index 0000000..ba6ae08 --- /dev/null +++ b/CLAUDE/XML_1764-beitraege.txt @@ -0,0 +1,627 @@ + + + + + + + + + + Nachricht. + + + Anzeige und Beschreibung des Zeitungsprojekts, sechs Tage vor dem ersten Stück, am 28. Januar 1764 in Königsberg ausgegeben. + + + + + Wir Catharina die Zweyte, von Gottes Gnaden Kayserin und Selbstherrscherin aller Reußen thun hiemit jedermänniglich kund und zu wißen… + + Übersetzung eines Berichts über den versuchten Aufstand zur Befreiung Iwans VI und dessen Ermordung, gedruckt in St. Petersburg, 17. August 1764. + + + + + + + + „So sag ers ja den Klugen nicht… + + + + Programmatisches Vorwort + + + + + + Lobreden auf Friedrich II., anlässlich der Feierlichkeiten an der Königsberger + Akademie zu dessen Geburtstag + + + + + + + + + + + + + + + + + + vgl. ZH II, 234 + + + + + + vgl. ZH II, 242 + + + + + + + + + + + + Versuch über die Krankheiten des Kopfes + vgl. ZH II, 239 + + + + + + + Roth III, 241–245 + + + + + + + + + + + + + + + + + + + ZH II, 239 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vgl. ZH II, 239 + + + + + + + + + + + + + + + + + vgl. ZH II, 239 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vgl. ZH II, 239 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jam cessere niues, cesserunt frigora brumse + + + + + + + + + + + + + + + + + vgl. ZH II, 246 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Berlocken + + + + + + + + + + + + + + + + + + + + ZH II, 239 + + + + + + + + + + + + + + + + ZH II, 253 + + + + + + + + + + + + Tabelle, wornach die Zahlungen nach Verschiedenheit der bisherigen Münz-Sorten + vom 1ten Junii 1764 an in dem jetzt nach wieder hergestellten Münz-Fuß geprägtem Gold- + und Silber-Gelde geschehen sollen. + + + + + + + + + + + + + + + + + + Wohlgeordnete Naturalienbehältnisse… + + vgl. ZH II, 246 + Beschreibung des Naturalienkabinetts von Friedrich Franz Saturgus, ausführlicher + in Friedrich Samuel + Bock: Nachricht von einem Preußischen Naturaliencabinet so sich dem Saturguschen Garten + zu Königsberg befindet (Königsberg: Kanter 1764). + + + + + + + + + + + + Bericht über die Königsberger Akademie + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An Done, auf die Frage: Ob er sie wie Meta liebte? + + Erstdruck der Klopstock-Ode, vgl. Werke und Briefe. Historisch-kritische Ausgabe, + begr. v. A. Beck, K. L. Schneider und H. Tiemann; hg. v. H. Gronemeyer, E. + Höpker-Herberg, K. Hurlebusch und R.-M. Hurlebusch (bisher 42 Bde.; Berlin, New York + 1974ff.), I 2, S. 357f. + + + + + + + + Bericht über Veröffentlichungen der Königsberger Akademie + + + + + + HBGA, I 26f. und X 579 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Von der Handlung + Unterzeichnet mit „K.“ (aber wohl nicht Kant, vgl. HBGA, X 300) + + + + + + + + + + + + + + + + + + + + + + + + HBGA, I 27 und X 339 + + + + + + + + + + + + + + Gedanken über die Ausbreitung der Wissenschaften, und einer verbesserten Erkänntniß + ZH II, 263 + Unterzeichnet mit „T.“ + + + + + + + + + + + Von der Art, wie die Schalen der Schnecken entstehen. + Aus dem Universalmagazin, Juli 1756, S. 13. + + + + + + + + + + + + + + + Ueber das Denken der Seele vor der Geburt. + ZH II, 263 + Unterzeichnet mit „T.“ + + + + + + + Für den Catalog der Ostermesse + + + + + Declaration des neuen Müntz-Edicts vom 29. Martii 1764 in Ansehung des + Königreichs Preussen, wegen der in Preußischen Sechsern seit den 21. April 1763 + getroffenen Contracte. + + + + + + + + + + + Das Gesicht des Einsiedlers Abdallah. Eine morgenländische Erzählung. + Unterzeichnet „K.“, meint aber nicht Kant (vgl. HBGA X, 300) + + + + + + + + + + Chimische Untersuchung einer Salzquelle in dem Dorfe Ponnau. + Unterzeichnet mit „H.“, wohl für den Königsberger Apotheker Heinrich Hagen, Vater von Karl Gottfried Hagen, siehe Neue Preußische Provinzial-Blätter 9 (1850), S. 51. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Der Character des Menschenfeindes. + Unterzeichnet „B.“ + + + + + + + + + + + + Der Neubekehrte. Eine Erzählung. + + + + + + + \ No newline at end of file diff --git a/CLAUDE/XML_1764-stuecke.txt b/CLAUDE/XML_1764-stuecke.txt new file mode 100644 index 0000000..3551643 --- /dev/null +++ b/CLAUDE/XML_1764-stuecke.txt @@ -0,0 +1,124 @@ + + + + + + 1 + + + 1 + 4 + + + 2 + + 5 + 8 + + + 3 + + 9 + 12 + + + 4 + + 13 + 16 + + + 5 + + 17 + 20 + + + 6 + + 21 + 24 + + + 7 + + 25 + 28 + + + 8 + + 29 + 32 + + + 9 + + 33 + 36 + + + 10 + + 37 + 40 + + + 11 + + 41 + 44 + + + 12 + + 45 + 48 + + + 13 + + 49 + 52 + + + 14 + + 53 + 56 + + + 15 + + 57 + 60 + + + 16 + + 61 + 64 + + + 17 + + 65 + 68 + + + 18 + + 69 + 72 + + + 19 + + 73 + 76 + + + // Theres more omitted... + \ No newline at end of file diff --git a/CLAUDE/XML_akteure.txt b/CLAUDE/XML_akteure.txt new file mode 100644 index 0000000..8c0285d --- /dev/null +++ b/CLAUDE/XML_akteure.txt @@ -0,0 +1,58 @@ + + + + + + Johann Georg Hamann + 1730–1788 + https://d-nb.info/gnd/11854523X + + + + August Mylius + 1763–1846 + https://d-nb.info/gnd/138422230 + + + + Nicolaus Nonnen + 1701–1772 + https://d-nb.info/gnd/136853323 + + + + Gottlieb August Lange + –1796 + https://d-nb.info/gnd/12972646X + + + + Paul François Velly + 1690–1759 + https://d-nb.info/gnd/100654045 + + + + Johann Jakob Kanter + 1738–1786 + https://d-nb.info/gnd/103759972 + + + diff --git a/CLAUDE/XML_kategorien.txt b/CLAUDE/XML_kategorien.txt new file mode 100644 index 0000000..66c0727 --- /dev/null +++ b/CLAUDE/XML_kategorien.txt @@ -0,0 +1,131 @@ + + + + + + In eigener Sache + Programmatische Vorwörter, Neuausrichtungen etc. + + + + Panegyrik + Lobreden auf Friedrich II., Königsgeburtstag etc. + + + + Politische Nachrichten aus aller Welt + + + + Weckselkurse + „Wechsel-Cours & Species“ + + + + Avertissement + + + + Bücherangebot des Kanterschen Buchladens + + + + Lotterieziehung + + + + Rezension + + + + Kommentar + + + + Auszug + + + + Aufsatz + + + + Gedicht + + + + Anzeige + + + + Todesanzeige + + + + Provinienz + + + + Literarischer Kurztext + + + + Gelehrte Nachrichten + + + + Übersetzung + + + + Lokalanzeigen + + + + Liste von Deserteuren + + + + Einkommende Fremde + + + + Erzählung + + + + Proklamation + + + + Öffentlicher Brief + + + + Lokalnachrichten + + + + Replik + + + + Enzyklopädische Beilage + + + + Nachtrag + + + diff --git a/CLAUDE/XML_orte.txt b/CLAUDE/XML_orte.txt new file mode 100644 index 0000000..63ceba9 --- /dev/null +++ b/CLAUDE/XML_orte.txt @@ -0,0 +1,76 @@ + + + + + + Königsberg + https://www.geonames.org/554234 + + + + Neuenburg + https://www.geonames.org/2659496 + + + + Köln + https://www.geonames.org/2886242 + + + + St. Petersburg + https://www.geonames.org/536203 + + + + Lindau + https://www.geonames.org/2877550 + + + + Frankfurt am Main + https://www.geonames.org/6553153 + + + + Leipzig + https://www.geonames.org/2879139 + + + + Berlin + https://www.geonames.org/2950159 + + + + Magdeburg + https://www.geonames.org/2874545 + + + + Stendal + https://www.geonames.org/6550942 + + + + Danzig + https://www.geonames.org/3099434 + + + + Halle + https://www.geonames.org/2911522 + + + diff --git a/CLAUDE/XML_werke.txt b/CLAUDE/XML_werke.txt new file mode 100644 index 0000000..f4fd461 --- /dev/null +++ b/CLAUDE/XML_werke.txt @@ -0,0 +1,94 @@ + + + + + + Der jüngere Eunlenspiegel oder der schlecht erzogene Mensch (o. O. 1765). + BSB München + + + + + M. Samuel Gotthold Langens Sendschreiben an den Hochwürdigen und hochgelahrten Herrn Gabriel Christoph Benjamin Mosche wegen des Heumannischen Erweises daß die Lehre der Reformirten Kirche von dem heiligen Abendmahle die rechte und wahre sey (o. O. 1764). + BSB München + + + + Bremisches Magazin zur Ausbreitung der Wissenschaften, Künste und Tugend, Von einigen Liebhabern derselben mehrentheils aus den Englischen Monatsschriften gesammlet und herausgegeben (7 Bde., Bremen und Leipzig: Förster 1756–1765), Bd. 7. + BSB München + + + + + Herrn Johann Ludwigs Bianconi Zehn Sendschreiben an Herrn Marchese Philippo Hercolani die Merkwürdigkeiten des Churbayerischen Hofes und der Residenz-Stadt München betreffend. Aus dem Italienischen übersetzt (Leipzig: Janius 1764). + BSB München + + + + + Sammlung einiger Kanzelreden von M. C. F. Bahrdt (Leipzig: Heinßius 1764). + + + + + Johann Gottlob Wilhelmi Versuch einer poetischen Übersetzung des Hohenliedes Salomo nebst einigen hierzu dienlichen Anmerkungen (Leipzig: Breitkopf und Sohn 1764). + ULB Halle + + + + Der liebenswürdige Mensch Oder Die Kunst Sich den Leuten angenehm und gefällig zu machen (Frankfurt und Zweybrücken: Hechtel 1753). + Stabi Regensburg + + + + + Herrn Heinrich Fieldings Esq. Reise nach Lissabon. Von ihm selbst beschrieben. Aus dem Englischen übersetzt. Nebst einer Nachricht von den Lebensumständen dieses berühmten Schriftstellers (Altona: Iversen 1764). + Stabi Bamberg + + + + + Der Brittische Plutarch oder Lebensbeschreibungen der größten Männer in England und Irrland seit den Zeiten Heinrichs VIII. bis unter George II. […], aus dem Englischen übersetzt (6 Bde., Leipzig und Züllichau: Waysenhaus und Frommann 1764–1768), Bd. 1. + BSB München + + + + + Einleitung in die moralische weltweisheit in Frag- und Antworten (Bremen 1766). + + + + + Sendschreiben an den Herrn Verfasser der Schrift: Erfreuliche Nachricht von einem hoffentlich bald zu errichtenden protestantischen Inquisitionsgericht (Danzig 1766). + SUB Göttingen + + + + + Neue Bibliothek der schönen Wissenchaften und freyen Kunst, Bd. 1 (Leipzig: Dyck 1765). + SUB Göttingen + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_KGPZ.txt b/CLAUDE/XSD_KGPZ.txt new file mode 100644 index 0000000..1e63a70 --- /dev/null +++ b/CLAUDE/XSD_KGPZ.txt @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_akteure.txt b/CLAUDE/XSD_akteure.txt new file mode 100644 index 0000000..5392a92 --- /dev/null +++ b/CLAUDE/XSD_akteure.txt @@ -0,0 +1,95 @@ + + + + + + + + + + + Ein Akteur im Personenverzeichnis Pflicht: @id, + <name>. + + + + + + Pflicht: Der/die (normierte/n) Name/n des + Akteurs. + + + + + + Optional: Der Name des Akteurs, so wie nach + diesem sortiert wird. Falls nicht vorhanden, sortieren wir + nach @id. + + + + + + Optional: Angaben zu Lebensdaten des Akteurs. + + + + + + + Optional: Die URI zur GND-Seite des Akteurs. + + + + + + Optional: Eine Anmerkung zum Akteur. + Öffentlich. + + + + + + Optional: Ein Vermerk zum Akteur. Intern. + + + + + + + Pflicht: Eindeutige ID des Akteurs. + + + + + + + + + Pflicht: Jeder Akteur hat eine eindeutige ID. + + + + + + + + + Pflicht: Jeder Akteur hat eine eindeutige GND. + + + + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_beitraege.txt b/CLAUDE/XSD_beitraege.txt new file mode 100644 index 0000000..535adbc --- /dev/null +++ b/CLAUDE/XSD_beitraege.txt @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + Verweist auf ein Stück, in wlchem ein Beitrag veröffentlicht + wurde. Darf mehrmals vorkommen. + + + + + Verweist auf eine Beilage, in welcher ein Beitrag + veröffentlicht wurde. Darf mehrmals vorkommen. + + + + + + Optional: Verweis auf eine Kategorie, in die der Beitrag + eingeordnet werden kann. + + + + + + Optional: Das Datum, welches im Beitrag angegeben ist. + + + + + + Optional: Der Titel des Beitrags. + + + + + + Optional: Der Anfang des Beitrags. + + + + + + + Optional: Verweis auf ein Werk. + + + + + + Optional: Verweis auf einen Beitrag. + + + + + + Optional: Verweis auf eine Person, die mit dem Beitrag in + Verbindung steht. + + + + + + Optional: Der Ort, welcher im Beitrag angegeben ist. + + + + + + + Optional: Eine Anmerkung zum Beitrag. Öffentlich. + + + + + + Optional: Ein Vermerk zum Beitrag. Intern. + + + + + + Optional: Eindeutige ID des Beitrags. + + + + + + + + + + Pflicht: jede vergebene ID eines Beitrags ist eindeutig. + + + + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_common.txt b/CLAUDE/XSD_common.txt new file mode 100644 index 0000000..8217c31 --- /dev/null +++ b/CLAUDE/XSD_common.txt @@ -0,0 +1,354 @@ + + + + + + + + + + + Referenziert ein anderes Element. + + + + + + Pflicht: Die ID des referenzierten Elements. + + + + + + Optional: Ist die Referenz unsicher? Erlaubt: true | false + + + + + + + + + Bezieht sich auf ein Stück und qualifiziert diese Beziehung. + + + + Pflicht: Das Datum, zumindest aber: das Jahr des Stücks. + + + + + + + + + Optional: Die Nummer des Stücks. + + + + + + Die erste Seitenzahl des Bezugs, falls bekannt. + + + + + + Die letzte Seitenzahl des Bezugs, falls bekannt. + + + + + + Die Art der Beziehung zum Beitrag. Werte: auszug (default), erwähnung, + kommentar. + + + + + + + + + + + + + + Bezieht sich auf eine Beilage und qualifiziert diese Beziehung + + + + + Pflicht: Das Datum, zumindest aber: das Jahr des Stücks. + + + + + + + + + Optional: Die Nummer des Stücks. + + + + + + Pflicht: Die Nummer der Beilage. + + + + + + Optional: Die erste Seitenzahl des Beitrags (nur bei mehreren Beiträgen + in einer Beilage). + + + + + + Optional: Die letzte Seitenzahl des Beitrags, erstreckt er sich über + mehrere Seiten (nur bei mehreren Beiträgen in einer Beilage). + + + + + + Die Art der Beziehung zum Beitrag. Werte: auszug (default), erwähnung, + kommentar. + + + + + + + + + + + + + + Bezieht sich auf einen Beitrag und qualifiziert diese Beziehung. + + + + + + Die Art der Beziehung zum Beitrag. Werte: erwähnung, kommentar. + + + + + + + + + + + + + Angabe zu Seite oder Stelle innerhalb eines Beitrages. + + + + + + + + + Bezieht sich auf ein Werk und qualifiziert diese Beziehung. + + + + + + Die Art der Beziehung zum Werk. Werte: rezension, auszug, kommentar, + erwähnung, anzeige, provinienz. + + + + + + + + + + + + + + + + Angabe zu Seite oder Stelle innerhalb eines Werkes. + + + + + + + + + Bezieht sich auf einen Akteur und qualifiziert diese Beziehung. + + + + + + Die Art der Beziehung zum Akteur. Werte: erwähnung, autor, + herausgeber, verleger, drucker, vertrieb, todesanzeige. + + + + + + + + + + + + + + + + + + + + Bezieht sich auf einen Ort und qualifiziert diese Beziehung. + + + + + + Die Art der Beziehung zum Ort. Werte: entstehungsort + + + + + + + + + + + + + + Link ins Internet + + + + + + URL des Links + + + + + + + + + + Elemente und Attribute zur Textauszeichnung im Volltext + + + + + + + + + + + + + + + + + + (date) contains a date in any format. + + + + + + + + supplies the value of the date or time in a standard form, e.g. + yyyy-mm-dd. + + + + + + + + + + specifies the earliest possible date for the event in standard form, e.g. + yyyy-mm-dd. + + + + + + + + + + specifies the latest possible date for the event in standard form, e.g. + yyyy-mm-dd. + + + + + + + + + + indicates the starting point of the period in standard form, e.g. + yyyy-mm-dd. + + + + + + + + + + indicates the ending point of the period in standard form, e.g. + yyyy-mm-dd. + + + + + + + diff --git a/CLAUDE/XSD_kategorien.txt b/CLAUDE/XSD_kategorien.txt new file mode 100644 index 0000000..57f9d52 --- /dev/null +++ b/CLAUDE/XSD_kategorien.txt @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + Pflicht: Der/Die Namen der Kategorie. + + + + + + Optional: Eine Anmerkung zur Kategorie. Öffentlich. + + + + + + Optional: Ein Vermerk zur Kategorie. Intern. + + + + + + + Pflicht: Eindeutige ID der Kategorie. + + + + + + + + + + + Jede Kategorie hat eine eindeutige ID. + + + + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_orte.txt b/CLAUDE/XSD_orte.txt new file mode 100644 index 0000000..9d5aa76 --- /dev/null +++ b/CLAUDE/XSD_orte.txt @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + Pflicht: Der/die (normierte/n) Name/n des Ortes. + + + + + + + Optional: Der Link zur Geonames-Seite des Ortes. + + + + + + Optional: Eine Anmerkung zum Ort. Öffentlich. + + + + + + Optional: Ein Vermerk zum Ort. Intern. + + + + + + + Pflicht: Eindeutige ID des Ortes. + + + + + Optional: true, wenn es sich um eine Körperschaft handelt. Default: false + + + + + + + + + Jeder Ort hat eine eindeutige ID. + + + + + + + Jeder Ort hat eine eindeutige Geonames-URI. + + + + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_stuecke.txt b/CLAUDE/XSD_stuecke.txt new file mode 100644 index 0000000..62bd82d --- /dev/null +++ b/CLAUDE/XSD_stuecke.txt @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + Die Nummer des Stücks, falls bekannt. + + + + + + Das Datum des Stücks, wie auf dem Titel angegeben, falls bekannt. + + + + + + Die erste Seitenzahl des Stücks, falls bekannt. + + + + + + Die letzte Seitenzahl des Stücks, falls bekannt. + + + + + + + Optional: Die Anzahl der Beilagen des + Stücks. + + + + + + + Optional: Anmerkungen zum Stück. Öffentlich. + + + + + + Optional: Vermerk zum Stück. Intern. + + + + + + + + + + Jedes Datum darf nur ein einziges Mal vorkommen. + + + + + + \ No newline at end of file diff --git a/CLAUDE/XSD_werke.txt b/CLAUDE/XSD_werke.txt new file mode 100644 index 0000000..1ca3380 --- /dev/null +++ b/CLAUDE/XSD_werke.txt @@ -0,0 +1,87 @@ + + + + + + + + + + + Ein Werk im Werkeverzeichnis Pflicht: @id, + <zitation>. + + + + + + + + + Pflicht: Unstrukturierte Zitation des Werkes. + + + + + + Optional: URLs zum Werk. + + + + + + + Pflicht: Die URL zum Werk. + + + + + Optional: Der Typ der + Resource. Default: Digitalisat + + + + + + + + + + Optional: Eine Anmerkung zum Werk. + Öffentlich. + + + + + + Optional: Ein Vermerk zum Werk. Intern. + + + + + + Pflicht: Eindeutige ID des Werkes. + + + + + + + + + Pflicht: Jedes Werk hat eine eindeutige ID. + + + + + + + From ad109c724ae848199528b78ea63ec98d0e30468f Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 18:49:58 +0200 Subject: [PATCH 02/19] Added custom linter files --- Scripts/custom_linter.py | 63 ++++++++++++++++++++++++++++++++ Scripts/process_linter_output.py | 16 ++++++++ 2 files changed, 79 insertions(+) create mode 100644 Scripts/custom_linter.py create mode 100644 Scripts/process_linter_output.py diff --git a/Scripts/custom_linter.py b/Scripts/custom_linter.py new file mode 100644 index 0000000..ca90d96 --- /dev/null +++ b/Scripts/custom_linter.py @@ -0,0 +1,63 @@ +import os +from lxml import etree + +NAMESPACE = {'kgpz': 'https://www.koenigsberger-zeitungen.de'} +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +XML_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, '..', 'XML')) + +def parse_xml_file(filepath): + try: + parser = etree.XMLParser(remove_blank_text=True) + tree = etree.parse(filepath, parser) + return tree.getroot() + except etree.ParseError as e: + print(f"Error parsing {filepath}: {e}") + return None + +def get_all_ids(root, tag): + return set(elem.get('id') for elem in root.xpath(f'.//kgpz:{tag}', namespaces=NAMESPACE)) + +def check_references(beitrag_root, reference_data, filename): + errors = [] + for ref_type, ref_tag in [('akteur', 'akteur'), ('kategorie', 'kategorie'), + ('ort', 'ort'), ('werk', 'werk')]: + for ref in beitrag_root.xpath(f'//kgpz:{ref_tag}', namespaces=NAMESPACE): + ref_id = ref.get('ref') + if ref_id not in reference_data[ref_type]: + line_number = ref.sourceline + errors.append((filename, line_number, f"INVALID REFERENCE ({ref_type}:{ref_id})")) + return errors + +def main(): + reference_data = { + 'akteur': get_all_ids(parse_xml_file(os.path.join(XML_DIR, 'akteure.xml')), 'akteur'), + 'kategorie': get_all_ids(parse_xml_file(os.path.join(XML_DIR, 'kategorien.xml')), 'kategorie'), + 'ort': get_all_ids(parse_xml_file(os.path.join(XML_DIR, 'orte.xml')), 'ort'), + 'werk': get_all_ids(parse_xml_file(os.path.join(XML_DIR, 'werke.xml')), 'werk'), + } + + all_errors = [] + + beitraege_dir = os.path.join(XML_DIR, 'beitraege') + for filename in os.listdir(beitraege_dir): + if filename.endswith('-beitraege.xml'): + beitrag_root = parse_xml_file(os.path.join(beitraege_dir, filename)) + if beitrag_root is not None: + errors = check_references(beitrag_root, reference_data, filename) + all_errors.extend(errors) + + all_errors.sort(key=lambda x: (x[0], x[1])) + + with open('linter_results.txt', 'w') as f: + for filename, line_number, error_message in all_errors: + f.write(f"{filename}:{line_number}:{error_message}\n") + + if all_errors: + for filename, line_number, error_message in all_errors: + print(f"{filename}, Line {line_number}: {error_message}") + exit(1) # Exit with error code if there are any errors + else: + print("No errors found.") + +if __name__ == "__main__": + main() diff --git a/Scripts/process_linter_output.py b/Scripts/process_linter_output.py new file mode 100644 index 0000000..5dd0b67 --- /dev/null +++ b/Scripts/process_linter_output.py @@ -0,0 +1,16 @@ +import os + +def main(): + if not os.path.exists('linter_results.txt'): + print("No linter results found.") + return + + with open('linter_results.txt', 'r') as f: + for line in f: + parts = line.strip().split(':', 2) + if len(parts) == 3: + filename, line_number, error_message = parts + print(f"::error file={filename},line={line_number}::{error_message}") + +if __name__ == "__main__": + main() From 0e579caedf2f646567a34b9a079663654411aa1a Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 18:52:01 +0200 Subject: [PATCH 03/19] Added github action to lint the files on upload --- .github/workflows/custom_linter.yml | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/custom_linter.yml diff --git a/.github/workflows/custom_linter.yml b/.github/workflows/custom_linter.yml new file mode 100644 index 0000000..a874cf5 --- /dev/null +++ b/.github/workflows/custom_linter.yml @@ -0,0 +1,40 @@ +name: Custom XML Linter + +on: + push: + paths: + - 'XML/**/*.xml' + pull_request: + paths: + - 'XML/**/*.xml' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install lxml + + - name: Run custom linter + run: python Scripts/custom_linter.py + + - name: Process linter output + if: failure() + run: | + python Scripts/process_linter_output.py + + - name: Upload linter results + if: failure() + uses: actions/upload-artifact@v3 + with: + name: linter-results + path: linter_results.txt From 22616a29f14a511ea4b437a086889abfe3209229 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 18:53:27 +0200 Subject: [PATCH 04/19] TEST linter --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 33d4401..036e3cd 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post From 662acc1c9edccd884b681d35c8e562adceed1fc9 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 18:55:52 +0200 Subject: [PATCH 05/19] Upgrade to artifact v4 --- .github/workflows/custom_linter.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/custom_linter.yml b/.github/workflows/custom_linter.yml index a874cf5..b63d322 100644 --- a/.github/workflows/custom_linter.yml +++ b/.github/workflows/custom_linter.yml @@ -12,10 +12,10 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' @@ -34,7 +34,8 @@ jobs: - name: Upload linter results if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: linter-results path: linter_results.txt + if-no-files-found: warn From 35cc933362d9b707cf649a0e91477b2916129074 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 18:56:07 +0200 Subject: [PATCH 06/19] TEST Linter --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 036e3cd..33d4401 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post From 87d64e214b220266d2ebf6a60b0cc1ceb75e687d Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:04:01 +0200 Subject: [PATCH 07/19] Changed output of custom linter --- Scripts/custom_linter.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Scripts/custom_linter.py b/Scripts/custom_linter.py index ca90d96..827aa38 100644 --- a/Scripts/custom_linter.py +++ b/Scripts/custom_linter.py @@ -2,8 +2,8 @@ import os from lxml import etree NAMESPACE = {'kgpz': 'https://www.koenigsberger-zeitungen.de'} -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -XML_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, '..', 'XML')) +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) +XML_DIR = os.path.join(REPO_ROOT, 'XML') def parse_xml_file(filepath): try: @@ -17,15 +17,16 @@ def parse_xml_file(filepath): def get_all_ids(root, tag): return set(elem.get('id') for elem in root.xpath(f'.//kgpz:{tag}', namespaces=NAMESPACE)) -def check_references(beitrag_root, reference_data, filename): +def check_references(beitrag_root, reference_data, filepath): errors = [] + relative_path = os.path.relpath(filepath, REPO_ROOT) for ref_type, ref_tag in [('akteur', 'akteur'), ('kategorie', 'kategorie'), ('ort', 'ort'), ('werk', 'werk')]: for ref in beitrag_root.xpath(f'//kgpz:{ref_tag}', namespaces=NAMESPACE): ref_id = ref.get('ref') if ref_id not in reference_data[ref_type]: line_number = ref.sourceline - errors.append((filename, line_number, f"INVALID REFERENCE ({ref_type}:{ref_id})")) + errors.append((relative_path, line_number, f"INVALID REFERENCE ({ref_type}:{ref_id})")) return errors def main(): @@ -41,20 +42,21 @@ def main(): beitraege_dir = os.path.join(XML_DIR, 'beitraege') for filename in os.listdir(beitraege_dir): if filename.endswith('-beitraege.xml'): - beitrag_root = parse_xml_file(os.path.join(beitraege_dir, filename)) + filepath = os.path.join(beitraege_dir, filename) + beitrag_root = parse_xml_file(filepath) if beitrag_root is not None: - errors = check_references(beitrag_root, reference_data, filename) + errors = check_references(beitrag_root, reference_data, filepath) all_errors.extend(errors) all_errors.sort(key=lambda x: (x[0], x[1])) with open('linter_results.txt', 'w') as f: - for filename, line_number, error_message in all_errors: - f.write(f"{filename}:{line_number}:{error_message}\n") + for filepath, line_number, error_message in all_errors: + f.write(f"{filepath}:{line_number}:{error_message}\n") if all_errors: - for filename, line_number, error_message in all_errors: - print(f"{filename}, Line {line_number}: {error_message}") + for filepath, line_number, error_message in all_errors: + print(f"{filepath}, Line {line_number}: {error_message}") exit(1) # Exit with error code if there are any errors else: print("No errors found.") From 0c669f017b3e62a790dbd7ff195d64588685b09b Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:05:32 +0200 Subject: [PATCH 08/19] TEST: broke prod on purpose --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 33d4401..036e3cd 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post From d257588649919805f1e3f38a2af61f13be682aa3 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:15:51 +0200 Subject: [PATCH 09/19] Edited custom linter --- Scripts/custom_linter.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Scripts/custom_linter.py b/Scripts/custom_linter.py index 827aa38..2181746 100644 --- a/Scripts/custom_linter.py +++ b/Scripts/custom_linter.py @@ -26,7 +26,7 @@ def check_references(beitrag_root, reference_data, filepath): ref_id = ref.get('ref') if ref_id not in reference_data[ref_type]: line_number = ref.sourceline - errors.append((relative_path, line_number, f"INVALID REFERENCE ({ref_type}:{ref_id})")) + errors.append(f"{relative_path}, Line {line_number}: INVALID REFERENCE ({ref_type}:{ref_id})") return errors def main(): @@ -48,15 +48,12 @@ def main(): errors = check_references(beitrag_root, reference_data, filepath) all_errors.extend(errors) - all_errors.sort(key=lambda x: (x[0], x[1])) - - with open('linter_results.txt', 'w') as f: - for filepath, line_number, error_message in all_errors: - f.write(f"{filepath}:{line_number}:{error_message}\n") + all_errors.sort() if all_errors: - for filepath, line_number, error_message in all_errors: - print(f"{filepath}, Line {line_number}: {error_message}") + print("Linter found the following errors:") + for error in all_errors: + print(error) exit(1) # Exit with error code if there are any errors else: print("No errors found.") From 1a5663b39856945ad075fd1c6d83eb621e27c54e Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:18:32 +0200 Subject: [PATCH 10/19] Simplified linter --- .github/workflows/custom_linter.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/custom_linter.yml b/.github/workflows/custom_linter.yml index b63d322..dccbb3e 100644 --- a/.github/workflows/custom_linter.yml +++ b/.github/workflows/custom_linter.yml @@ -26,16 +26,3 @@ jobs: - name: Run custom linter run: python Scripts/custom_linter.py - - - name: Process linter output - if: failure() - run: | - python Scripts/process_linter_output.py - - - name: Upload linter results - if: failure() - uses: actions/upload-artifact@v4 - with: - name: linter-results - path: linter_results.txt - if-no-files-found: warn From 17bc2d4705a888a5f731696dbf155fe57ef6fbf7 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:18:59 +0200 Subject: [PATCH 11/19] TEST: reverted changes --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 036e3cd..33d4401 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post From 7d30bc642aea399aa238bfc248861771236c80d0 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:25:30 +0200 Subject: [PATCH 12/19] =?UTF-8?q?Linter=20beschreibung=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflows/{custom_linter.yml => verweise_pruefen.yml} | 8 ++++---- Scripts/{custom_linter.py => lint_verweise.py} | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename .github/workflows/{custom_linter.yml => verweise_pruefen.yml} (73%) rename Scripts/{custom_linter.py => lint_verweise.py} (100%) diff --git a/.github/workflows/custom_linter.yml b/.github/workflows/verweise_pruefen.yml similarity index 73% rename from .github/workflows/custom_linter.yml rename to .github/workflows/verweise_pruefen.yml index dccbb3e..9b94708 100644 --- a/.github/workflows/custom_linter.yml +++ b/.github/workflows/verweise_pruefen.yml @@ -14,15 +14,15 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up Python + - name: Python-Setup uses: actions/setup-python@v5 with: python-version: '3.x' - - name: Install dependencies + - name: Abhängigkeiten installieren run: | python -m pip install --upgrade pip pip install lxml - - name: Run custom linter - run: python Scripts/custom_linter.py + - name: Verweise prüfen + run: python Scripts/lint_verweise.py diff --git a/Scripts/custom_linter.py b/Scripts/lint_verweise.py similarity index 100% rename from Scripts/custom_linter.py rename to Scripts/lint_verweise.py From 584c16306486442888e62c92c381f20c2539d208 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:25:56 +0200 Subject: [PATCH 13/19] TEST: verweise --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 33d4401..036e3cd 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post From 39bd96d05a8640d26dafaa260adf8b5e8baca708 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:28:26 +0200 Subject: [PATCH 14/19] removed workflow --- .github/workflows/verweise_pruefen.yml | 28 -------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .github/workflows/verweise_pruefen.yml diff --git a/.github/workflows/verweise_pruefen.yml b/.github/workflows/verweise_pruefen.yml deleted file mode 100644 index 9b94708..0000000 --- a/.github/workflows/verweise_pruefen.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Custom XML Linter - -on: - push: - paths: - - 'XML/**/*.xml' - pull_request: - paths: - - 'XML/**/*.xml' - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Python-Setup - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - name: Abhängigkeiten installieren - run: | - python -m pip install --upgrade pip - pip install lxml - - - name: Verweise prüfen - run: python Scripts/lint_verweise.py From 2da1a37fce2600b914b41dbd0d83f6c5f2e227a5 Mon Sep 17 00:00:00 2001 From: Simon Martens <61149221+Simon-Martens@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:29:41 +0200 Subject: [PATCH 15/19] Create verweise.yml workflow --- .github/workflows/verweise.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/verweise.yml diff --git a/.github/workflows/verweise.yml b/.github/workflows/verweise.yml new file mode 100644 index 0000000..66acdd1 --- /dev/null +++ b/.github/workflows/verweise.yml @@ -0,0 +1,28 @@ +name: Verweise prüfen + +on: + push: + paths: + - 'XML/**/*.xml' + pull_request: + paths: + - 'XML/**/*.xml' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Python-Setup + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Abhängigkeiten installieren + run: | + python -m pip install --upgrade pip + pip install lxml + + - name: Verweise prüfen + run: python Scripts/lint_verweise.py From 7c15d470ff7874a4a52039af991379776569a918 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:30:01 +0200 Subject: [PATCH 16/19] TEST: revert --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 036e3cd..33d4401 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post From 8685f815ae8a8d5122d87df5931e0ff126d2ead6 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:33:34 +0200 Subject: [PATCH 17/19] Reset workflow --- .github/workflows/verweise.yml | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .github/workflows/verweise.yml diff --git a/.github/workflows/verweise.yml b/.github/workflows/verweise.yml deleted file mode 100644 index 66acdd1..0000000 --- a/.github/workflows/verweise.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Verweise prüfen - -on: - push: - paths: - - 'XML/**/*.xml' - pull_request: - paths: - - 'XML/**/*.xml' - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Python-Setup - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - name: Abhängigkeiten installieren - run: | - python -m pip install --upgrade pip - pip install lxml - - - name: Verweise prüfen - run: python Scripts/lint_verweise.py From b23c2c8766f41f1cab181a1589ca73ba94c9af8e Mon Sep 17 00:00:00 2001 From: Simon Martens <61149221+Simon-Martens@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:34:25 +0200 Subject: [PATCH 18/19] Create XML_lint.yml --- .github/workflows/XML_lint.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/XML_lint.yml diff --git a/.github/workflows/XML_lint.yml b/.github/workflows/XML_lint.yml new file mode 100644 index 0000000..869e96e --- /dev/null +++ b/.github/workflows/XML_lint.yml @@ -0,0 +1,28 @@ +name: XML prüfen + +on: + push: + paths: + - 'XML/**/*.xml' + pull_request: + paths: + - 'XML/**/*.xml' + +jobs: + Verweise: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Python-Setup + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Abhängigkeiten installieren + run: | + python -m pip install --upgrade pip + pip install lxml + + - name: Verweise prüfen + run: python Scripts/lint_verweise.py From 7fb3acbfa33d673096af9f3d780f81ab1a60e76e Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:35:02 +0200 Subject: [PATCH 19/19] TEST: bug intro --- XML/beitraege/1764-beitraege.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XML/beitraege/1764-beitraege.xml b/XML/beitraege/1764-beitraege.xml index 33d4401..036e3cd 100644 --- a/XML/beitraege/1764-beitraege.xml +++ b/XML/beitraege/1764-beitraege.xml @@ -1871,7 +1871,7 @@ - + Verordnung des Königlich Preußischen Hof-Postamts über die berliner reitende Post