ili2c ist der INTERLIS-Compiler und ein in Java erstelltes Programm, das eine Interlis-Modelldatei (ili) überprüft (ob das Modell der INTERLIS-Sprache entspricht).
Zusätzlich umfasst ili2c Hilfsfunktionen betrf. Modellen (z.B. zum Modell passendes XML-Schema herleiten).
Die Log-Meldungen sollen dem Benutzer zeigen, was das Programm macht. Am Anfang erscheinen Angaben zur Programm-Version. Falls das Programm ohne Fehler durchläuft, wird das am Ende ausgegeben.:
Info: ili2c-1.0.0 ... Info: lookup model <CoordSys> ... Info: ...compiler run done
Bei einem Fehler wird das am Ende des Programms vermerkt. Der eigentliche Fehler wird aber in der Regel schon früher ausgegeben.:
Info: ili2c-1.0.0 ... Info: lookup model <CoordSys> ... Error: ASSOCIATION should end with "END" ... Error: ...compiler run failed
Das Programm setzt Java 1.6 voraus.
GNU Lesser General Public License
In den folgenden Abschnitten wird die Funktionsweise anhand einzelner Anwendungsfälle beispielhaft beschrieben. Die detaillierte Beschreibung einzelner Funktionen ist im Kapitel „Referenz“ zu finden.
Je nach Betriebssystem kann das Programm auch einfach durch Doppelklick mit linker Maustaste auf `ili2c.jar` gestartet werden.
Es wird eine INTERLIS 1-Datei validiert/geprüft.
java -jar ili2c.jar path/to/model.ili
Es wird eine INTERLIS 2-Datei validiert/geprüft.
java -jar ili2c.jar path/to/model.ili
Der Compiler stellt selber fest, in welcher Sprachversion das Modell ist.
Es wird eine INTERLIS 2-Datei validiert/geprüft, wobei die Fehlermeldungen in eine Text-Datei geschrieben werden.
java -jar ili2c.jar --log result.log path/to/model.ili
Die Fehlermeldungen werden in die Datei result.log geschrieben.
Es erscheint eine Bildschirmmaske, mit deren Hilfe die zu validierende Datei ausgewählt und die Validierung gestartet werden kann.
java -jar ili2c.jar
Das gelesene Modell wird als INTERLIS-1 Modell exportiert:
java -jar ili2c -o1 file1.ili file2.ili
Das gelesene Modell wird als INTERLIS-2 Modell exportiert:
java -jar ili2c -o2 file1.ili file2.ili
Für das gelesene Modell wird ein XML-Schema erzeugt:
java -jar ili2c -oXSD file1.ili file2.ili
Für das gelesene Modell wird ein Translation-XML erstellt:
java -jar ili2c -oNLS --out translation.xml file.ili
Das gelesene Modell wird mit Hilfe einer Translation-XML übersetzt und als INTERLIS 2-Modell exportiert:
java -jar ili2c -o2 --out file_it.ili --lang it --nlsxml translation.xml file.ili
Das gelesene Modell wird mit transformierten Koordinatenwertebereichen als INTERLIS 2-Modell exportiert:
java -jar ili2c -o2 --out file_LV95.ili --trafoNewModel model_LV95 --trafoDiff 2000000,1000000 --trafoFactor 1,1 --trafoEpsg 2056 --trafoImports GeometryCHLV95_V1=GeometryCHLV03_V1 file.ili
Alle Modelle werden aufgelistet. Die Suche startet beim gegebenen Repository.
java -jar ili2c --listModels http://models.interlis.ch/
Alle Daten werden aufgelistet. Die Suche startet beim gegebenen Repository.
java -jar ili2c --listData http://models.interlis.ch/
In den folgenden Abschnitten werden einzelne Aspekte detailliert, aber isoliert, beschrieben. Die Funktionsweise als Ganzes wird anhand einzelner Anwendungsfälle beispielhaft im Kapitel „Funktionsweise“ (weiter oben) beschrieben.
java -jar ili2c.jar [Options] [file]
Ohne Kommandozeilenargumente erscheint die Bildschirmmaske, mit deren Hilfe die zu validierende Datei ausgewählt und die Validierung gestartet werden kann.
Der Rückgabewert ist wie folgt:
- 0 Validierung ok, keine Fehler festgestellt
- !0 Validierung nicht ok, Fehler festgestellt
Optionen:
| Option | Beschreibung |
|---|---|
| --no-auto | Der Compiler sucht nicht automatisch nach benötigten Modellen. Alle Modelle müssen explizit und in der richtigen Reihenfolge mitgegeben werden. |
| --modeldir path | Dateipfade, die Modell-Dateien (ili-Dateien) enthalten. Mehrere Pfade können durch Semikolon ‚;‘ getrennt werden. Es sind auch URLs von Modell-Repositories möglich. Default ist %ILI_DIR;http://models.interlis.ch/;%JAR_DIR %ILI_DIR ist ein Platzhalter für das Verzeichnis mit der ili-Datei der Kommandozeile (Hauptmodell). %JAR_DIR ist ein Platzhalter für das Verzeichnis des ili2c Programms (ili2c.jar Datei). Beim Auflösen eines IMPORTs wird die INTERLIS Sprachversion des Hauptmodells berücksichtigt, so dass also z.B. das Modell Units für ili2.2 oder ili2.3 unterschieden wird. |
| --out file/dir | Datei oder Verzeichnis für die Ausgabe (Verzeichnis muss existieren). |
| -o0 | Erzeugt keine Ausgabe (default). |
| -o1 | Erzeugt ein INTERLIS-1 Modell. |
| -o2 | Erzeugt ein INTERLIS-2 Modell. |
| -oXSD | Erzeugt ein XTF XML-Schema. |
| -oGML | Erzeugt ein eCH-118-1.0/GML3.2-Schema. |
| -oILIGML2 | Erzeugt ein eCH-118-2.0/GML3.2-Schema. |
| -oFMT | Erzeugt ein INTERLIS-1 Format. |
| -oIMD | Erzeugt Modeldaten als IlisMeta07 INTERLIS-Transfer (XTF). |
| -oIMD16 | Erzeugt Modeldaten als IlisMeta16 INTERLIS-Transfer (XTF). |
| -oNLS | Erzeugt Namen der Modellelemente als Translation-XML-Datei. |
| -oUML | Erzeugt ein UML2/XMI-Transfer (Eclipse Variante). |
| -oIOM | (deprecated) Erzeugt Modeldaten als iom04 INTERLIS-Transfer (XTF). |
| --with-predefined | Ereugt die Ausgabe inkl. das vordefinierte Modell INTERLIS. Normalerweise ist es nicht enthalten und wird auch nicht benötigt. |
| --listModels uri | Alle Modelle (ohne veraltete Modelle) werden aufgelistet (gem. IliRepository09 Modell). Die Suche startet beim gegebenen Repository. |
| --listAllModels uri | Alle Modelle (inkl. veraltete Modelle) werden aufgelistet (gem. IliRepository09 Modell). Die Suche startet beim gegebenen Repository. |
| --listModels2 uri | Alle Modelle (ohne veraltete Modelle) werden aufgelistet (gem. IliRepository20 Modell). Die Suche startet beim gegebenen Repository. |
| --listAllModels2 uri | Alle Modelle (inkl. veraltete Modelle) werden aufgelistet (gem. IliRepository20 Modell). Die Suche startet beim gegebenen Repository. |
| --listData uri | Alle Daten werden aufgelistet (gem. DatasetIdx16 Modell). Die Suche startet beim gegebenen Repository. |
| --check-repo-ilis uri | Alle (aktuellen, ohne die veralteten) Modelle im gegebenen Repository werden geprüft. |
| --clone-repos | Kopiert die aktuellen Modelle aus den gegebnen Repositories in das Ausgabe-Verzeichnis (--out folder). Es wird auch das passende ilimodels.xml erstellt. |
| --nlsxml file | Name der Translation-XML Datei. |
| --lang lang | Sprache des Modells (de,fr,it oder en). |
| --translation translatedModel=originModel | Korreliert ein übersetztes Modell mit seinem Ursprungsmodell. Wird bei übersetzten INTERLIS 1 Modellen benötigt. |
| --trafoDiff d_x,d_y | Faktor um den neuen Koordinatenwertebereich zu berechnen |
| --trafoFactor f_x,f_y | Faktor um den neuen Koordinatenwertebereich zu berechnen |
| --trafoEpsg code | neuer EPSG Code (e.g. 2056) |
| --trafoImports newImport=oldImport | Definiert die transformierte Version eines importierten Modells (z.B. GeometryCHLV95_V1=GeometryCHLV03_V1) |
| --trafoNewModel newName | Names des transformierten neuen Modells. |
| --log filename | Schreibt die log-Meldungen in eine Text-Datei. |
| --xtflog filename | Schreibt die log-Meldungen als Daten in eine INTERLIS-Transfer-Datei (gem. dem Modell IliVErrors). |
| --proxy host | Proxy Server für den Zugriff auf Modell Repositories |
| --proxyPort port | Proxy Port für den Zugriff auf Modell Repositories |
| --trace | Erzeugt zusätzliche Log-Meldungen (wichtig für Programm-Fehleranalysen) |
| --without-warnings | Unterdrückt Warnings des Compilers. |
| --with-warnings | Warnings des Compilers werden nicht unterdrückt. (default) |
| --quiet | Unterdrückt Info-Meldungen des Compilers. |
| --help | Zeigt einen kurzen Hilfetext an. |
| --version | Zeigt die Version des Programmes an. |
Einzelne Funktionen des Compiler nutzen Meta-Attribute. Metaattribute stehen unmittelbar vor dem Modellelement das sie betreffen und beginnen mit !!@. Falls der Wert (rechts von `=`) aus mehreren durch Leerstellen getrennten Wörtern besteht, muss er mit Gänsefüsschen eingerahmt werden (`"..."`).
| Modelelement | Metaattribut | Beschreibung |
|---|---|---|
| ConstraintDef | name |
Name des Constraints (ili2.3 oder bei ili2.4 falls constraint kein name hat). Wenn ein ConstraintDef keinen expliziten Namen hat, wird für der Name aus der interne Id des Constraints erzeugt. Die interne Id ist eine aufsteigende Zahl und beginnt pro Klasse mit 1. Das erste Constraint einer Klasse heisst also Constraint1, das Zweite Constraint2 usw. !!@ name = c1023 |
| AttributeDef, DomainDef | CRS |
Der EPSG Code des Geometrieattributs (bzw. des Wertebereichs) !!@CRS=EPSG:2056 Coord2_LV95 = COORD 2460000.000 .. 2870000.000, 1045000.000 .. 1310000.000; |
| ModelDef | technicalContact |
Wert für das Attribut technicalContact im ilimodels.xml Eintrag des Modells. |
| ModelDef | IDGeoIV |
GeoIV-Identifikator dieses Modells. Mehrere Einträge durch Komma getrennt. Beispiel: !!@ IDGeoIV="114.1, 114.3" Der Wert wird auch für das Attribut tags im ilimodels.xml Eintrag des Modells verwendet. |
| ModelDef | furtherInformation |
Wert für das Attribut furtherInformation im ilimodels.xml Eintrag des Modells. |
| ModelDef | tags |
Wert für das Attribut tags im ilimodels.xml Eintrag des Modells. |
| ModelDef | precursorVersion |
Wert für das Attribut precursorVersion im ilimodels.xml Eintrag des Modells. |
| ModelDef | furtherMetadata |
Wert für das Attribut furtherMetadata im ilimodels.xml Eintrag des Modells. |
| ModelDef | Original |
Wert für das Attribut Original im ilimodels.xml Eintrag des Modells. |
| ModelDef | ili2c.translationOf |
Nur INTERLIS 1: Name des Modells in der Ursprungssprache. Wie TRANSLATION OF in INTERLIS 2. |
| ModelDef | ili2c.textMinimalCharset |
Definiert den minimal zu unterstützenden Zeichenumfang. Das ist aber keine Angabe zur Zeichenkodierung. Die Zeichenkodierung ergibt sich aufgrund des Transferformates, d.h. für XML muss mindestens UTF-8 unterstützt werden. Gilt für: alle TextType innerhalb des Modells Mögliche Werte: ili23AnnexB oder Namen gem. http://www.iana.org/assignments/character-sets z.B. windows-1252 oder ISO-8859-15 Default: ili23AnnexB |
| ModelDef | ili2c.ili23xsd.addAllInterlisTypesDefault |
Definiert, ob im generierten XML-Schema alle Typen aus dem Modell INTERLIS generiert werden, oder nur die für diese Modelle effektiv benötigten. Nur die Einstellung des "letzten" Modells (von keinem anderen abhängig) wird ausgewertet. Mögliche Werte: true oder false Default: false |
| ModelDef | ili2c.ili23xsd.addAliasTableDefault |
Definiert, ob im generierten XML-Schema, das ALIAS Sub-Element in der HEADERSECTION zulässig ist, oder nicht. Nur die Einstellung des "letzten" Modells (von keinem anderen abhängig) wird ausgewertet. Mögliche Werte: true oder false Default: false |
| TopicDef, ModelDef | ili2c.ili23xml.supportPolymorphicRead |
Definiert, ob polymorpher Transfer (bei mehrsprachigen Modelle oder erweiterten Topics) zulässig ist, oder nicht. Wenn das Metaattribt beim ModelDef steht, gilt es für alle darin enthaltenen TopicDef. Mögliche Werte: true oder false Default: false |
| TopicDef, ModelDef | ili2c.ili23xml.supportInconsistentTransfer |
Definiert, ob inkonsistenter Transfer (z.B. ein Ausschnitt) zulässig ist, oder nicht. Wenn das Metaattribt beim ModelDef steht, gilt es für alle darin enthaltenen TopicDef. Mögliche Werte: true oder false Default: false |
| TopicDef, ModelDef | ili2c.ili23xml.supportIncrementalTransfer |
Definiert, ob inkrementeller Transfer zulässig ist, oder nicht. Wenn das Metaattribt beim ModelDef steht, gilt es für alle darin enthaltenen TopicDef. Mögliche Werte: true oder false Default: false |
| TopicDef, ModelDef | ili2c.ili23xml.supportSourceBasketId |
Definiert, ob das BID XML-Attribut bei den Objekten im Transfer zulässig ist, oder nicht. Das BID XML-Attribut bei den Behältern ist unabhängig davon immer vorhanden. Wenn das Metaattribt beim ModelDef steht, gilt es für alle darin enthaltenen TopicDef. Mögliche Werte: true oder false Default: false |
Ein Modell kann beliebige weitere Metaattribute enthalten; diese werden durch ili2c gelesen, und je nach Ausgabeformat wieder ausgegeben (z.B. bei -oIMD16).
In eCH-0118 werden weitere Meta-Attribute spezifiziert. Diese werden bei der Verwendung von -oILIGML2 durch ili2c benutzt.