Hallo,

ich bin recht unerfahren was JAXB angeht und habe gleich ein kleines Problem: Ich möchte gerne eine Objektmapping unter verwendung von Inhalten aus der XML-Datei verfeinern und ggf. andere Klassen zuweisen. Konkret würde mich interessieren, wie ich bei folgendem XSD:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 rel. 3 (http://www.altova.com) by Andersland (private) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pd="http://xmlns.abc.com/xy/process/1999" targetNamespace="http://xmlns.abc.com/xy/process/1999" elementFormDefault="qualified">
    <xs:element name="ProcessDefinition">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="pd:activity" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="processVariables">
        <xs:complexType/>
    </xs:element>
    <xs:element name="activity">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="pd:type"/>
                <xs:element ref="pd:resourceType"/>
            </xs:sequence>
            <xs:attribute name="name" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="type" type="xs:string"/>
    <xs:element name="resourceType" type="xs:NCName"/>
    <xs:element name="x" type="xs:integer"/>
    <xs:element name="y" type="xs:integer"/>
    <xs:element name="inputBindings">
        <xs:complexType/>
    </xs:element>
    <xs:element name="transition">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="pd:from"/>
                <xs:element ref="pd:to"/>
                <xs:element ref="pd:lineType"/>
                <xs:element ref="pd:lineColor"/>
                <xs:element ref="pd:conditionType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="from" type="xs:string"/>
    <xs:element name="to" type="xs:string"/>
    <xs:element name="lineType" type="xs:NCName"/>
    <xs:element name="lineColor" type="xs:integer"/>
    <xs:element name="conditionType" type="xs:NCName"/>
</xs:schema>

Je nach Inhalt von <xs:element ref="pd:type"/> jeweils unterschiedliche Klassen für Activity ableiten kann.
Ich kenne solche Verfahren aus der Hibernate-Ecke, finde hier aber nicht den richtigen Ansatz.
Wenn es alternativen zu JAXB gibt, welche das Problem einfach lösen können, wäre ich auch hier für einen Tipp dankbar

Viele Grüße

Anders