Umgang mit XSD Schemata

Bei dem meisten XML basierten Datenquellen wird die Datenstruktur per XSD Schema beschrieben (bspw. WFS Dienste).

Die Eigenschaften werden dabei vom Dienstanbieter geliefert, dies erfolgt über XSD Schemas.

Ein XSD Schema verfügt i.d.R. über Import oder Include Anweisungen, so dass letztendlich eine Kaskade von Dateien an einem "Schema" beteiligt ist.

Die Auswertung kann nur korrekt erfolgen, wenn alle beteiligten Dateien verfügbar sind (sprich: heruntergeladen).

Intern erfolgt ein Caching der Schemas. Im Kontext einer Ebenendefinition werden die dort angegebenen Daten zum Proxy-Server, Login. etc. bei Schemaabruf berücksichtigt.

Neu ab Version 7.6.6.6:

Das Caching erfolgt jetzt persistent. Alle XSD Schemas von den Quellen schemas.opengis.net und www.w3.org werden dabei für 7 Tage persistiert.

In seltenen Fällen kann es dabei Probleme gegeben, bspw. wenn ein interner Dienst, der externe Schemas referenziert ohne Proxy verwendet wird.

Folgende XSD sind lokal eingebettet und werden nie aus dem Internet abgerufen:

  • www.w3.org/1999/xlink.xsd
  • www.w3.org/2001/xml.xsd

Neu ab Version 7.6.8.4

Wenn ein Schema-Import für einen Namespace erfolgt, wird mit der (standardmäßig aktivierten) Option importSchemaOnce, das dort angegebene xsd Schema abgerufen, alle folgenden Import-Urls mit dem gleichen Zielschema werden dann ignoriert.

Die folgende Beschreibung gilt für Iwan Version >= 7.6.4.26.

Alle anderen Schemas werden entsprechend der referenzierenden URL gelesen.

Hinterlegen von lokalen Dateien

Bei Bedarf können die Dateien lokal hinterlegt werden. Es gilt dabei:

Schau zuerst ...

  • die URL ist keine Datei (file://....),

  • der Pfad der Url ist nicht leer (http://foo.org/pfad)

  • das keine Query-String Argumente vorhanden sind (http://foo.org/pfad?arg1)

  • prüfe dann, ob ein lokaler Ordner nach dem Schema <GlobalWorkingDir>XSD\<HOST> vorhanden ist und dort die Datei aus dem Pfad-Teil der URL vorhanden ist

  • wenn ja: verwende die lokale Datei

  • wenn nein: fahre mit dem Download der Ressource aus der ursprünglich angegebenen Quelle fort

Gesucht wird ein Ordner XSD im "GlobalWorkingDir". Je nach Programm ist dieser definiert als:

Iwan

Iwan bestimmt sein GlobalWorkingDir über den Eintrag "WorkingDir" in der Datei $default.config im Iwan7 Installationsordner.

Geotools.Net

Der Ordner wird in dem aktuellen Verzeichnis gesucht. Bsp.:

cd /d d:\temp
geotools.net.exe

dann wäre hier das "GlobalWorkingDir" d:\temp\

Bsp.:

Die angeforderte Resource ist https://schemas.opengis.net/wfs/2.0/wfs.xsd ...

Dazu würde geprüft werden, ob (auf dem Rechner wo das Programm, also Iwan oder GeoTools etc. läuft) die Datei D:\Temp\XSD\schemas.opengis.net\wfs\2.0\wfs.xsd vorhanden ist, die dann alternativ verwendet werden würde.

Die Schemas für schemas.opengis.net können als ein ZIP von der gleichnamigen Seite heruntergeladen werden.

Alternative Verwendung - Fix von Problemen der Dienstanbieter

In letzter Zeit häufen sich wieder Probleme mit Diensten einiger Anbieter. Die Problemquelle liegt in falsch konfigurierten XSD Schemas, die der Dienst anbietet.

Schwerpunktmäßig handelt es sich dabei um WFS Dienste, in diesem Zusammenhang sind weitere Hinweise zu dem Problem unter Das XSD Schema "xyz" ist ungültig beschrieben.

Leider scheint es den Anbietern nicht möglich zu sein, die Probleme zu beheben.

Daher haben wir einige XSDs zusammengestellt, die diese Probleme umgehen. Das Vorgehen ist recht einfach:

  • Laden Sie das XSD.zip herunter.
  • Ermitteln Sie das "GlobalWorkingDir" (siehe weiter oben).
  • Entpacken Sie das Zip-Archiv in den so ermittelten Ordner.

Konkret sind Dienste folgender Betreiber dort adressiert (Stand: 01/24):

  • sgx.geodatenzentrum.de
  • gdi.berlin.de

Es wird dabei im Wesentlichen nur die gml.xsd überschrieben, die Ressourcen kommen dann direkt von opengis.net.

In einem Fall wird ein nicht definiertes gml:_Feature Element im Ergebnis von DescribeFetureType verwendet, dieses haben wir kurzerhand in der gml.xsd mit definiert.

Das ist definitiv keine Ideal-Lösung, wir bitten Sie trotzdem den Dienstanbieter mit etwas Nachdruck auf diese Umstände hinzuweisen.


Zuletzt geändert: 09.02.2024 13:05:57 (erstmals erstellt 25.08.2023) // Alias: "Iwan7SchemaReader"