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

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

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

Fall 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 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 4

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

java -jar ili2c.jar

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

--log filename Schreibt die log-Meldungen in eine Text-Datei.
--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)
--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.