Also, hier scheint schon die Herangehensweise nicht ganz richtig.
Bei SOAP-XML-Schnittstellen ist eigentlich JaxWS und nicht JaxB Mittel der Wahl und das Schema wird nicht von einer XSD-Datei, sondern von einer WSDL-Datei vorgegeben.
Dann gibt es eine grundlegende Frage zu klären!
Welche Seite definiert die Schnittstelle?!
Anhand deines Kommentars
Das Problem ist, dass das SOAP-Message nicht die ganze oben angezeigte Struktur enthält
erkenne ich, dass du bereits eine fertige SOAP-Message bekommst. Demnach bist du nicht die Seite, die die Schnittstelle definiert, da die andere Seite dir ja bereits Nachrichten schickt.
Aufgrund dessen, muss auf der anderen Seite bereits eine WSDL existieren, mit der diese Nachricht erzeugt wurde.
Lass dir EXAKT diese Datei geben. Sie müssen immer 100% auf beiden Seiten der Schittstelle übereinstimmen. Mit dieser Datei generierst du dir mittels JaxWS deine Java-Klassen.
Sich selbst ein Schema zusammen zu basteln (das vielleicht bei 90% der Requests funktioniert) ist amateurhaftes Gefrickel und vergewaltigt das ganze Konzept das hinter einem gemeinsamen Schema steht. Dann kann man auch gleich Textnachrichten hin und her schicken (was dann sogar performanter wäre).
Edit:
Die drastische Ausdrucksweise ist nicht auf dich bezogen, sondern auf den Umstand, dass sooo häufig in der Praxis Technologien eigesetzt werden ohne das das dahinterstehende Konzept begriffen wurde. Dann sind diese Technologien in der Regel völlig kontraproduktiv und machen mehr Arbeit als sie nützen. Normalerweise hätte die anderen Seite sofort die WSDL liefern/anbieten müssen. Das ist sehr frustrierend mit der Zeit.