# DOM Typeinformation vom XSD



## Templon (2. Apr 2009)

Hallo zusammen,

Also ich bin noch nicht allzu erfahren mit XML und XSD und all dem anderen XML Zeug, also nicht schlagen 

Also ich möchte einen XML Editor schreiben. Dieser Editor soll alle Daten von dem XML-File in einen JTree laden (Jaja, ich weiss, das gibts bestimmt schon zu genüge, aber ist eigentlich nur eine Übung =) und dann sollte man irgendwie die Werte der Elemente in diesem JTree verändern können. Bis hier komme ich noch klar, denke ich.

Jetzt möchte ich aber noch, dass wenn ein Element ein Datentyp (Im XSD File definiert) ist, welcher z.B. nur gewisse Strings zulässt (also eine enumeration im XSD), dass ich dann z.B. den Wert des Elements nicht über ein Textfeld verändern kann, sondern mit einer Combobox. Das gleiche für booleans, da könnte man eine Combobox nehmen, in welcher nur true und false steht. Komme ich irgendwie an diese Typinformationen ran? 

Ich hoffe das war verständlich 

Gruss Templon


----------



## Ebenius (2. Apr 2009)

Hast Du Dir in diesem Kontext schon Apache Woden angesehen? Nicht, dass ich es schon benutzt habe; kenne ich nur indirekt über Axis2.

Ebenius


----------



## Templon (2. Apr 2009)

Hab mich mal ein wenig mit dem Apache Woden befasst, aber irgendwie nichts gefunden 

Accessing XML Schema Information During Document Validation 

Genau so etwas bräuchte ich...


----------



## Ebenius (2. Apr 2009)

Stimmt. Diesen Teil der Apache Web Services meinte ich ja eigenlich.  Apache XmlSchema

Hilft das weiter?

Ebenius


----------



## Wildcard (2. Apr 2009)

Du kannst dafür Eclipse EMF nehmen. Mit EMF generierst du dir erstmal aus der XSD ein Modell (Java Klassen). Im Anschluss kannst du dann mit genau zwei Klicks einen Editor zu deinem Modell generieren lassen, der genau das tut was du möchtest.
Der generierte Editor läuft zwar als Eclipse PlugIn, aber die Logik dahinter lässt sich auch auf Swing übertragen.


----------



## Templon (3. Apr 2009)

Danke euch beiden, ich werde mir beides Mal anschauen =)


----------



## Ebenius (3. Apr 2009)

Wildcard hat gesagt.:


> Du kannst dafür Eclipse EMF nehmen. Mit EMF generierst du dir erstmal aus der XSD ein Modell (Java Klassen). Im Anschluss kannst du dann mit genau zwei Klicks einen Editor zu deinem Modell generieren lassen, der genau das tut was du möchtest.
> Der generierte Editor läuft zwar als Eclipse PlugIn, aber die Logik dahinter lässt sich auch auf Swing übertragen.


Hab ich grad nen Denkfehler? EMF sagt mir zwar etwas, kenne ich aber nicht wirklich. Ich habe absichtlich kein XML-Binding (wie JAXB) vorgeschlagen, weil es meiner Meinung nach nicht zu den im Eingangsbeitrag gestellten Aufgaben passt. Verstehst Du die Frage falsch, oder ich Deinen Lösungsansatz, oder beides, oder was anderes? ???:L

Ebenius


----------



## Wildcard (3. Apr 2009)

Was spricht den gegen Databinding? Der generierte Editor leistet im Übrigen genau was der OP fordert. Validieren gegen die Constraints, Comboboxen bei enums, checkboxen bei  boolean usw. Warum soll das nicht passen? ???:L


----------



## Ebenius (3. Apr 2009)

Bis jetzt gehe ich davon aus, dass der Themeneröffner einen Editor bauen möchte, in dem er ein beliebiges Schema öffnen kann und dann eine XML-Datei editiert. XML-Binding kann ich doch nur mit dem Schema machen. Wenn ich das zur Laufzeit wählen will, dann fällt das doch flach. ???:L

Wie gesagt: Wenn ich mich gedanklich irgendwo verrannt hab: Sag Bescheid, ich lerne gern was dazu. Den Aufwand mir EMF gleich anzusehen, will ich mir allerdings vorerst sparen. 

Ebenius


----------



## Wildcard (3. Apr 2009)

Ebenius hat gesagt.:


> Bis jetzt gehe ich davon aus, dass der Themeneröffner einen Editor bauen möchte, in dem er ein beliebiges Schema öffnen kann und dann eine XML-Datei editiert. XML-Binding kann ich doch nur mit dem Schema machen. Wenn ich das zur Laufzeit wählen will, dann fällt das doch flach. ???:L


Nun, das hatte ich anders verstanden. Solltest du recht haben, passt es trotzdem. EMF kann dynamische Modelle verwalten und bietet auch einen passenden dynamic Editor mit grundsätzlich der gleichen Funktionalität. Nur Customizing wird dann etwas komplexer und das Modell ist weniger handlich (wie auch, wenn es dynamisch ist).


----------

