AOQML-Massenvalidierung: Unterschied zwischen den Versionen
Cvk (Diskussion | Beiträge) |
Cvk (Diskussion | Beiträge) |
||
Zeile 14: | Zeile 14: | ||
# Das Skript für die Massenvalidierung herunterladen und in einen schicken, leicht zugänglichen Ordner packen. Wenn all eure Projekte für Antamar in einem Ordner liegen, würde der sich anbieten. | # Das Skript für die Massenvalidierung herunterladen und in einen schicken, leicht zugänglichen Ordner packen. Wenn all eure Projekte für Antamar in einem Ordner liegen, würde der sich anbieten. | ||
# Eingabeaufforderung starten und in den Ordner navigieren, in dem ihr das Skript abgelegt habt. Da Konsolenbefehle nicht mehr zum Allgemeinwissen gehören, hier ein Beispiel. <br>Antamarprojekte liegen auf einer zweiten Festplatte (D) im Ordner ''Antamar'' und ihr müsst dort von C aus hinnavigieren:<br>[[Datei:Eingabeaufforderung.png|Ordnernavigation Eingabeaufforderung]] | # Eingabeaufforderung starten und in den Ordner navigieren, in dem ihr das Skript abgelegt habt. Da Konsolenbefehle nicht mehr zum Allgemeinwissen gehören, hier ein Beispiel. <br>Antamarprojekte liegen auf einer zweiten Festplatte (D) im Ordner ''Antamar'' und ihr müsst dort von C aus hinnavigieren:<br>[[Datei:Eingabeaufforderung.png|Ordnernavigation Eingabeaufforderung]] | ||
− | # Dort angekommen und unter der Annahme, dass ihr dort die Dateien aus dem Archiv hinkopiert habt und die Umgebungsvariable erweitert, gebt ihr '''checkintegrity.py PfadzumPrüfordner > foo.txt''' ein und startet das Skript mit der Eingabetaste.<br>[[Datei:Integritaetspruefung.png|Ablauf der Integritätsprüfung]]<br>Ihr könnt natürlich auch volle Pfade der Form C:\Antamar\Projekt1\Quest1 angeben, müsst es sogar, wenn sich die Ordner nicht im gleichen Verzeichnis | + | # Dort angekommen und unter der Annahme, dass ihr dort die Dateien aus dem Archiv hinkopiert habt und die Umgebungsvariable erweitert, gebt ihr '''checkintegrity.py PfadzumPrüfordner > foo.txt''' ein und startet das Skript mit der Eingabetaste.<br>[[Datei:Integritaetspruefung.png|Ablauf der Integritätsprüfung]]<br>Ihr könnt natürlich auch volle Pfade der Form ''C:\Antamar\Projekt1\Quest1'' angeben, müsst es sogar, wenn sich die Ordner nicht im gleichen Verzeichnis wie das Script befinden. Hängt man das ''> name.txt'' hinten dran, wird eine Textdatei erstellt, die die Auswertung enthält, lässt man es weg, werden die Fehler direkt in der Konsole ausgegeben, wie auf dieser Grafik zu sehen. Der Name der Datei ist frei wählbar.<br>Falls ihr Schritt drei ausgelassen habt, müsstet ihr zum Starten jedesmal sehr viel mehr tippen, das kann dann in etwa so aussehen: '''C:\Python36\python.exe checkintegrity.py D:\Antamar\Quest1 > fehler.txt'''.<br>Und ja, natürlich könnt ihr das Skript auch ''ci.py'' nennen und dann darüber aufrufen. Kein Problem. |
=== Linux === | === Linux === |
Version vom 19. Juli 2017, 16:38 Uhr
Es kommt vereinzelt vor, dass Projekte in AOQML sehr groß werden und mit unserem AOQML-Editor kaum bis gar nicht mehr zu managen sind. In der Regel werden solche Projekte von erfahrenen AOQML-Autoren geschrieben, die häufig die Leiste mit den Codeschnipseln nicht mehr benötigen und andere Editoren verwenden, mit denen sie erfahrungsgemäß einfach schneller arbeiten. Trotzdem kann es nicht schaden, ein Projekt zum Abschluss auf grundsätzliche Validität zu prüfen. Zu diesem Zweck hat Enno ein Skript geschrieben, das alle XML-Dateien in einem Ordner und dessen Unterordnern gegen die XSD prüft und bei sämtlichen Links per include oder choice evaluiert, ob die verlinkten Dateien vorhanden sind und das Ergebnis der Prüfung als Textdatei ausgibt.
Anwendung
Die Einrichtung und Anwendung unterscheidet sich je nach Betriebssystem und ist nicht explizit auf Benutzerfreundlichkeit ausgelegt, sondern richtet sich eher an Nutzer mit Programmierkenntnissen. Daher hier folgend Anleitungen für Windows und Linux.
Das Skript selbst ist in Python 2.7 geschrieben, aber lauffähig bis mindestens 3.6 und verwendet Java für den eigentlichen Abgleich. Es sollten demnach Java und Python installiert sein.
Windows 8.1
- Python installieren, wenn noch nicht geschehen. Idealerweise auf der Hauptebene einer Festplatte, also zum Beispiel unter C:\Python36.
- Eine halbwegs aktuelle Javaversion installieren, wenn noch nicht geschehen. (Das OpenJDK macht Probleme).
- Python als Befehl in Windows' Kommandozeilentool (Eingabeaufforderung; cmd) einrichten. (Optional, wir gehen hier in der Folge davon aus, dass es gemacht wurde.) Dazu in in die Systemsteuerung gehen, System, Erweiterte Systemeinstellungen, Erweitert, Umgebungsvariablen und dort bei Path ans Ende euren Pfad zum Pythonordner eintragen. Mit einem Semikolon davor, damit Windows weiß, dass dort ein neuer Pfad beginnt.
- Das Skript für die Massenvalidierung herunterladen und in einen schicken, leicht zugänglichen Ordner packen. Wenn all eure Projekte für Antamar in einem Ordner liegen, würde der sich anbieten.
- Eingabeaufforderung starten und in den Ordner navigieren, in dem ihr das Skript abgelegt habt. Da Konsolenbefehle nicht mehr zum Allgemeinwissen gehören, hier ein Beispiel.
Antamarprojekte liegen auf einer zweiten Festplatte (D) im Ordner Antamar und ihr müsst dort von C aus hinnavigieren: - Dort angekommen und unter der Annahme, dass ihr dort die Dateien aus dem Archiv hinkopiert habt und die Umgebungsvariable erweitert, gebt ihr checkintegrity.py PfadzumPrüfordner > foo.txt ein und startet das Skript mit der Eingabetaste.
Ihr könnt natürlich auch volle Pfade der Form C:\Antamar\Projekt1\Quest1 angeben, müsst es sogar, wenn sich die Ordner nicht im gleichen Verzeichnis wie das Script befinden. Hängt man das > name.txt hinten dran, wird eine Textdatei erstellt, die die Auswertung enthält, lässt man es weg, werden die Fehler direkt in der Konsole ausgegeben, wie auf dieser Grafik zu sehen. Der Name der Datei ist frei wählbar.
Falls ihr Schritt drei ausgelassen habt, müsstet ihr zum Starten jedesmal sehr viel mehr tippen, das kann dann in etwa so aussehen: C:\Python36\python.exe checkintegrity.py D:\Antamar\Quest1 > fehler.txt.
Und ja, natürlich könnt ihr das Skript auch ci.py nennen und dann darüber aufrufen. Kein Problem.
Linux
Noch offen.
Bekannte Probleme aka. TODO für die Zukunft
- Wenn in Links Variablen genutzt werden, wird fälschlicherweise ein Fehler geschmissen. Dieser kann ignoriert werden. Variablen in Links sollten künftig bei der Auswertung ignoriert oder es sollte geschaut werden, welche Werte sie annehmen können, um dann auf diese Werte zu prüfen.
- Bei Verwendung von Funktionen aus der AOQML-Bibliothek wird angegeben, dass die Datei nicht existiert. Das ist formal korrekt, kann aber ignoriert werden. Künftig Links nicht mehr betrachten, die mit /lib/ anfangen oder die Liste der möglichen Libraries in einem Array hinterlegen, sodass hier auch auf korrekte Schreibung geprüft werden kann. Nachteil: Händisch nachzurüsten.
- Verschachtelte includes mit Ebenenwechsel können zu falschen Fehlermeldungen führen.
- Hohe Laufdauer des Scripts bei sehr vielen Dateien ist normal und kein Grund zur Besorgnis. Einfach warten, es schließt irgendwann ab.
Download des Scripts
Hier die aktuelle Version des Skripts zum Download.