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 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. + + + + + + + diff --git a/Scripts/lint_verweise.py b/Scripts/lint_verweise.py new file mode 100644 index 0000000..2181746 --- /dev/null +++ b/Scripts/lint_verweise.py @@ -0,0 +1,62 @@ +import os +from lxml import etree + +NAMESPACE = {'kgpz': 'https://www.koenigsberger-zeitungen.de'} +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: + 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, 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(f"{relative_path}, Line {line_number}: 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'): + 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, filepath) + all_errors.extend(errors) + + all_errors.sort() + + if all_errors: + 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.") + +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() 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