+ disy Informationssysteme ++ Stephanienstraße 30 ++ D-76133 Karlsruhe ++ www.disy.net +
XHydroUmsetzung in ein
XML SchemaDr. Gabor Nagypal
Projektleiter
Dr. Wassilios KazakosLeiter Geschäftsentwicklung
2© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Die ThemenNeue oder veränderte AnforderungenPerformanzLeichte Verarbeitung durch ProgrammeModularität
StrukturUmsetzungErweiterungsmöglichkeiten
Einsatzszenarien
3© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Neue oder veränderte AnforderungenPerformanz
hat Vorrang vor MenschenverständlichkeitGrund: kurze Dokumente auch ohne Komprimierung
auf dem ersten Workshop ein häufig geäußerter WunschFolge: kurze Tagnamen
Leichte Verarbeitung in ProgrammenGrund: Daten sollten bereits anhand des Tagnamens erkennbar sein
deutlich einfachere Programmierung in XSLT oder JavaScript Folge: eindeutige Tagnamengegenläufige Forderung zur Performanz, da Tagnamen evtl. länger werden
Hohe ModularitätGrund: es ist unmöglich „das perfekte Schema“ zu entwickeln
verschiedene Anforderungen in verschiedenen Einsatzszenarienviele Anforderungen werden erst im Einsatz sichtbarleichte Erweiterbarkeit und/oder Veränderbarkeit ist gewünscht
Folge: das Schema besteht aus mehreren Modulen
4© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Performanz: kurze TagnamenDas offizielle Schema Version verwendet kurze Tagnamen
das XML Dokument ist nicht mehr verständlich für Menschenaber immer noch Menschenlesbar
mit Standard XML Technologie ist eine verständliche Version leicht erstellbarz.B. durch XSLT eine HTML Seite
Beispiel: lange vs. kurze Tagnamen
<timeSeriesList><timeSeries>...<timedDataElement>...<dataValue><dFloatValue>1.0</dFloatValue>...
<tsel><tse>...<tde>...<v><vf>1.0</vf>...
5© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Performanz: das kürzeste Dokument
Übermittlung eines Werts mit ZeitstempelUnformatiert: nur 166 Bytes
<tsel xmlns="http://www.xhydro.org/schemas/official/2007/05"<tse> <d> <tde> <ts> <tsv>2007-04-02T08:30:56</tsv> </ts> <vls> <v> <vf>1.0</vf> </v> </vls> </tde> </d> </tse></tsel>
6© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Leichte Verarbeitung in ProgrammenEs gibt Elementnamen die mehrmals im UML Modell vorkommen
name, description ...für organization, device ...
Aufgabe: Direkter Zugriff auf den Wert über XSLT, JavaScript, etc. Falls der Name global eindeutig ist, ist es einfach
z.B. JavaScript: getElementByName(„xxx“) Methodez.B. XSLT: „*//xxx“ XPath Muster
Daher: eindeutige Namen für jedes Element im Schemau.U. längere Namen
oName (on), oDescription (od) statt name (n) und description (d)widerspricht der Performanz Anforderung
in der Praxis sind die Unterschiede aber nicht großKonvention:
Elemente, die sehr häufig vorkommen, bekommen die kürzeren Namen
7© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Modularität: Struktur
ParameterCodes
UnitCodes ...
DataValue
MetaData
Common
Location
TimeSeries
XHydro XHydroArchive ... }
}
}Code-Listen
Module
Schemata
Ref. SystemCodes
8© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Modularität: Umsetzung
<xs:complexType name="dataValueType"> <xs:complexContent> <xs:extension base="_complexBaseType"> <xs:sequence> <xs:element name="vq" type="dataValueQualityType" minOccurs="0" /> <xs:group ref="dataValueGroup" /> ...
<xs:complexType name="dataValueQualityType">
...<xs:group
name="dataValueGroup">...
...targetNamespace=„http://www.xhydro.org/schemas/official/2007/05“...<xs:include schemaLocation="../modules/DataValue.xsd" /><xs:include schemaLocation="../modules/MetaData.xsd" /><xs:include schemaLocation="../modules/TimeSeries.xsd" />...
TimeSeries.xsd
MetaData.xsdDataValue.xsd
XHydro.xsd
9© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Modularität: Veränderung
<xs:complexType name="dataValueType"> <xs:complexContent> <xs:extension base="_complexBaseType"> <xs:sequence> <xs:element name="vq" type="dataValueQualityType" minOccurs="0" /> <xs:group ref="dataValueGroup" /> ...
<xs:complexType name="dataValueQualityType">
...<xs:group
name="dataValueGroup">...
...targetNamespace=„http://www.xhydro.org/schemas/archive/2007/05“...<xs:include schemaLocation="../modules/DataValue.xsd" /><xs:include schemaLocation="../modules/MetaDataStrict.xsd" /><xs:include schemaLocation="../modules/TimeSeries.xsd" />...
TimeSeries.xsd
MetaDataStrict.xsdDataValue.xsd
XHydroArchive.xsd
10© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Praktische SchwierigkeitenModularität erhöht die technische Komplexität
Laut W3C-Spezifikation sollte beispielsweise das redefine XML Schema Konstrukt verwendet werden
Die untersuchten Werkzeuge haben unterschiedliche BugsBeispiel XML Spy: Probleme mit redefineBeispiel Apache Xerces: Probleme mit relativen URIs
Unser Ziel: eine Lösung, die möglichst mit allen Werkzeugen und auf allen Plattformen funktioniert
praktisch unmöglich alles auszuprobierenDas Schema wurde/wird mit den folgenden Werkzeugen getestet
XML Spy 2006/2007 (Marktführender XML Editor)Eclipse Web Tools Platform (sehr weit verbreitetes Entwicklungswerkzeug)Java JDK 6 Programm, also Apache Xerces (offizielle Lösung von Sun).NET 2.0 C# Programm (offizielle Lösung von Microsoft)
11© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Einsatzszenario: XHydro ArchiveIm XHydro-Schema sind alle Metadaten-Elemente optional
wichtig um auch kompakte Dokumente zu unterstützenMetadaten werden beim Austausch zwischen Messgerät und Zentrale häufig nicht benötigt
Während der Archivierung werden die vollständigen Metadaten benötigtsollte auch durch XML Schema validiert werden
LösungMetaDataStrict.xsd Modul
leichte Veränderung von MetaData.xsddie meisten Elemente obligatorischz.B. aus <xs:group ref="unitCodeGroup" minOccurs="0"> wird<xs:group ref="unitCodeGroup">
TimeSeriesStrict.xsd Modulleichte Veränderung von TimeSeries.xsdglobale Metadaten-Elemente obligatorisch
XHydroArchive.xsdMetaDataStrict und TimeSeriesStrict anstatt MetaData und TimeSeries einfügenneuer Namensraum definieren
12© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Einsatzszenario: XHydro „Küste“Beispielszenario (fiktiv)Im Küstenbereich könnten ganz andere Ortsangaben nützlich seinLösung
Location Modul ganz austauschenLocationShore.xsdXHydroShore.xsd
LocationShore anstatt Location einbindenneuer Namensraum
13© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Einsatzszenario: herstellerspezifische Angaben
XHydro untertützt ad-hoc Erweiterungen durch das „any“ Konstruktkeine Schema-Erweiterungen sind nötig!
Fiktives Beispiel: disy möchte auch die Serialnummer eines Messgeräts übermittelnLösung
...<tsel xmlns="http://www.xhydro.org/schemas/official/2007/05"xmlns:d="http://www.disy.net/device" ...<pd> <ext> <d:serial>ABCDEFG</d:serial> </ext> <dn>Device #1</dn> <dd>This is the disy device #1</dd></pd>...
14© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Das Schema praktisch einsetzenXML Generierung (z.B. am Messgerät)
Schema ist nicht erforderlichDer richtige Namensraum soll verwendet werden<tsel xmlns=„http://www.xhydro.org/schemas/official/2007/05“ ...
Fall 1: XML Dokumente enthalten keinen Hinweis auf die SchemadateiSchema ist durch den Namensraum definiertDie Datei kann ohne Validierung eingelesen/verarbeitet werdenFür eine Validierung muss der Parser/Editor konfiguriert werden
Das Mapping „Namensraum <-> Schemadatei“ muss definiert werden
Fall 2: XML Dokumente enthalten einen Hinweis auf die Schemadatei<tsel xsi:schemaLocation=„http://www.xhydro.org/schemas/official/2007/05 http://www.xhydro.org/schemas/official/2007/05/XHydro.xsd“Für die Validierung kann die im Dokument spezifizierte Datei verwendet werden, ohne weitere KonfigurationEine andere Datei (z.B. eine lokale Kopie) kann trotzdem konfiguriert werden.
15© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Das Schema im Webhttp://www.xhydro.org/schemas/official/2007/05
Enthält eine Beschreibung der ModuleEnthält Download-Links auf
das Schemadie Moduledie Code-Listen
Konventionen: Unter dem Schema-Namensraum wird ein Verweis auf die Schemadateien bereitgestelltneue Schemaversionen erzeugen neue Namensräumeschon jetzt: http://www.xhydro.org/schemas/archive/2007/05z.B. in der Zukunft: http://www.xhydro.org/schemas/official/2099/01
16© disy Informationssysteme GmbH, www.disy.net, [email protected], +49 721 1600600
Besten Dank für Ihre Besten Dank für Ihre AufmerksamtkeitAufmerksamtkeit
Besuchen Sie uns… www.disy.net
Dr. Gabor NagypalDr. Wassilios Kazakos
Top Related