ThemenfeldBildung / XHochschule

XHochschule ist ein Standardisierungsvorhaben des Landes Sachsen-Anhalt und des BMBF.
http://xhochschule.de
Other
21 stars 3 forks source link

Code-Generierung mit JAXB nicht möglich für xhochschule-sdgevidence.xsd #12

Closed MichaelLierath closed 2 years ago

MichaelLierath commented 3 years ago

Autor: Michael Lierath Art der Organisation: HIS eG, CAMS-Hersteller

Bei der Code-Generierung von Java-Klassen aus xhochschule-sdgevidence.xsd mithilfe von JAXB tritt folgender Fehler auf:

'AdminunitFirstline' is already defined org.xml.sax.SAXParseException; systemId: http://xhochschule.de/def/core_vocabularies/2.0.1/Core%20Person%20Vocabulary%20 1.0.0/CoreVocabularyBasicComponents-v1.00.xsd; lineNumber: 13; columnNumber: 72; 'AdminunitFirstline' is already defined

Mit Blick auf den sehr langen Stacktrace hatte ich zunächst einen zirkularen Import vermutet. Allerdings halte ich es für wahrscheinlich, dass es mit dem mehrfachen Import von referenzierten Schemata zusammenhängt. Vgl. http://xhochschule.de/def/xhochschule/0.4/xsd/xhochschule-sdgevidence.xsd

<xs:include schemaLocation="xhochschule-baukasten.xsd"/>
<xs:import schemaLocation="http://xbildung.de/def/xbildung/0.4/xsd/xbildung-baukasten.xsd" namespace="http://xbildung.de/def/xbildung/0.4/xsd"/>
<xs:import schemaLocation="http://xhochschule.de/def/core_vocabularies/2.0.1/Core%20Location%20Vocabulary%201.0.0/CoreLocation-v1.00.xsd" namespace="http://www.w3.org/ns/corevocabulary/location"/>
<xs:import schemaLocation="http://xhochschule.de/def/core_vocabularies/2.0.1/Core%20Person%20Vocabulary%201.0.0/CorePerson-v1.00.xsd" namespace="http://www.w3.org/ns/corevocabulary/person"/>
<xs:import schemaLocation="http://xoev.de/latinchars/1_1/datatypes/latinchars.xsd" namespace="http://xoev.de/latinchars/1_1/datatypes"/>

Und in http://xhochschule.de/def/xhochschule/0.4/xsd/xhochschule-baukasten.xsd

<xs:import schemaLocation="http://xbildung.de/def/xbildung/0.4/xsd/xbildung-baukasten.xsd" namespace="http://xbildung.de/def/xbildung/0.4/xsd"/>
<xs:import schemaLocation="http://xoev.de/schemata/code/1_0/xoev-code.xsd" namespace="http://xoev.de/schemata/code/1_0"/>
XHochschuleDE commented 3 years ago

Guten Tag Herr Lierath,

wir bedanken uns bei Ihnen für das Teilen Ihrer Erfahrungen mit der JAXB-Codegenerierung. Wir werden die erwähnten Schemareferenzen schnellstmöglich auf zirkuläre Imports prüfen und uns hier zurückmelden.

Viele Grüße, Oliver Budke

XHochschuleDE commented 3 years ago

@MichaelLierath Wir danken Ihnen für die wertvollen Implementierungserfahrungen. Wir streben eine dopplungsfreie import/include-Architektur an, die aber nicht immer umsetzbar ist: Wir können wir keine Redundanzen bei von uns nicht verantworteten Schemata gewährleisten.

Wir konnten den von Ihnen genannten JAXB-Fehler nicht reproduzieren, weil wir über keine entsprechende Installation verfügen. Wir nehmen aber gerne mehr Informationen zu dem vorliegenden Fehler entgegen, speziell interessieren uns die gewählten Einstellungen Ihrer JAXB-Installation. Haben Sie ein Feld bezüglich der Prüfungen von multiplen Schemaimports festgelegt? Diese Einstellung haben wir in unseren Entwicklungsumgebungen gesetzt und sie hat erfahrungsgemäß weitreichende Auswirkung auf die Validierung von XML Schemata und gibt multiple Imports als Warnung anstatt Fehler aus.

MichaelLierath commented 2 years ago

Die Generierung mit v0.9 funktionierte bei uns weitgehend problemlos. Viele der problematischen Imports sind hier nicht mehr vorhanden.

Danke und Grüße