XSD Parser

Moin :slight_smile:

ich bin seit einiger Zeit dabei mich bzgl. des Einlesens von XML-Schemata (xsd’s) zu belesen.

Ich benötige als Ausgangsbasis für mein eigentliches Projekt die Struktur des Schemas und habe daher nach einem passenden Framework zum Auslesen von XSD-Dateien umgesehen.

Gefunden habe ich:

[ul]
[li]xsd4j
[/li][li]XSOM
[/li][/ul]

Beide wurden allerdings seit Ewigkeiten nicht mehr weiterentwickelt.

Mir ist bewusst, dass xsd-Dateien auch der xml-Spezifikation entsprechen und ich zum Parsen der Struktur auch einen beliebigen xml-Parser nehmen könnte. Hier hätte ich dann allerdings, sofern mir bekannt, lediglich die Struktur ohne semantische Zusammenhänge (bspw. complextypes etc…). Da eine xsd auch ganz schnell mal ganz komplex werden kann, möchte ich mir diese Regeln auch nicht unbedingt selber zusammenschustern.

Ferner geht es mir auch nicht um das Unmarshalling von XML-Dateien. Ich brauche tatsächlich zur Laufzeit die Strukturen beliebiger XSD-Dokumente zur Laufzeit.

Vielleicht kann mir ja jemand ein Stichwort nennen

Viele Grüße

Das mal gelesen?
http://www.torsten-horn.de/techdocs/java-xml-jaxb.htm
http://www.torsten-horn.de/techdocs/java-xsd.htm

Hilft dir das weiter?

Hallo,

auf die Seite bin ich während meiner Suche tatsächlich auch schon gestoßen. Sofern ich das allerdings überblicken kann bietet mir JAXB nicht wirklich das was ich benötige. JAXB ist ja eher dazu da um aus Java Klassen Schemata zu generieren, bzw. umgekehrt aus diesen Java-Code zu erzeugen. Ferner ist es auch ein gutes Mittel um Xml-Dokumente gegen übergebene XSD-Dateien zu validieren.

Ich benötige allerdings Zugriff auf die jeweiligen low-level informationen, also Typen (xs:integer, xs:string etc…) minOccurs, maxOccurs, length, min-length etc… Was ich gesucht habe war ein Framework mit dessen Hilfe diese Low-Level Informationen jedoch schon soweit verarbeitet sind, dass ich die einzelnen complexTypes und simpleTypes aus möglicherweise mehreren ineinander verschachtelten XSD-Dateien nicht mehr selber „zusammensuchen“ muss.

Zumindest zum Zeitpunkt meines aktuellen Verständnisses ist dies mit JAXB aber out of the box nicht möglich. Ich werde mir nun jedoch die Seite noch ein wenig genauer durchlesen. Eventuell habe ich beim Überfliegen ja etwas übersehen. :slight_smile:

Exotische Anforderung hast du da. Was möchtest du damit bauen?

Nachdem XML-Schemas XML Dokumente sind, die ihrerseits per Schema definiert sind (http://www.w3.org/2001/XMLSchema.xsd), kann JAXB Dir vielleicht doch helfen. Du erzeugst den Java-Code anhand des XMLSchema-Schemas. Dann unmarshallst Du das gewünschte XML-Schema Dokument. Damit hast du zur Laufzeit die low level Informationen in Form von Java-Objekten in Deinem Programm.

Das ist tatsächlich eine sehr gute Idee. Beim Überfliegen der Schema-Spezifikation habe ich die Definition des Schemas an sich tatsächlich auch schon gefunden. Die Idee dieses zum Unmarshalling heranzuziehen ist mir dabei allerdings nicht gekommen. (Aktuelles Schema der Spezifikation nach W3 → http://www.w3.org/2012/04/XMLSchema.xsd) Das werde ich heute Abend gleich mal testen. :slight_smile:

Hauptsächlich geht es um ein Programm zur automatischen Generierung von technischen Dokumentationen.

Versteh ich nicht, Schema-Dateien sind doch ganz normale XML-Dokumente

Du kannst also eine Schema-Datei mit jeder normalen Technik parsen (StAX, SAX, DOM), ist doch kein Problem

Wenn du aber high-level Klassen automatisch haben willst, dann musst du (wie schon gesagt), das Schema-Schema z.B. an JAXB verfüttern. Könnte allerdings verwirrend werden.