ili2c-Anleitung

Überblick

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).

Log-Meldungen

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

Laufzeitanforderungen

Das Programm setzt Java 1.6 voraus.

Lizenz

GNU Lesser General Public License

Funktionsweise

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.

Beispiele

Fall 1.1

Es wird eine INTERLIS 1-Datei validiert/geprüft.

java -jar ili2c.jar path/to/model.ili

Fall 1.2

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.

Fall 1.3

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.

Fall 2.1

Es erscheint eine Bildschirmmaske, mit deren Hilfe die zu validierende Datei ausgewählt und die Validierung gestartet werden kann.

java -jar ili2c.jar

Fall 3.1

Das gelesene Modell wird als INTERLIS-1 Modell exportiert:

java -jar ili2c -o1 file1.ili file2.ili

Fall 3.2

Das gelesene Modell wird als INTERLIS-2 Modell exportiert:

java -jar ili2c -o2 file1.ili file2.ili

Fall 4.1

Für das gelesene Modell wird ein XML-Schema erzeugt:

java -jar ili2c -oXSD file1.ili file2.ili

Fall 5.1

Für das gelesene Modell wird ein Translation-XML erstellt:

java -jar ili2c -oNLS --out translation.xml file.ili

Fall 5.2

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

Fall 6.1

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

Fall 7.1

Alle Modelle werden aufgelistet. Die Suche startet beim gegebenen Repository.

java -jar ili2c --listModels http://models.interlis.ch/

Fall 8.1

Alle Daten werden aufgelistet. Die Suche startet beim gegebenen Repository.

java -jar ili2c --listData http://models.interlis.ch/

Referenz

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.

Aufruf-Syntax

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.

INTERLIS-Metaattribute

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.