2015-01-26 22 views
5

Otrzymuję błąd podczas generowania Java z WSDL. Chciałem skorzystać z funkcji XML Schema 1.1 (xsd: assert). Zapewnia, że ​​element jest dostępny w żądaniu usługi sieciowej.Jakie są alternatywy dla obsługi XML Schema 1.1 przez JAXB?

<xsd:assert test="(count(InstanceDetail[@OrderCodeType eq 'OFFERID']) eq 1)" /> 

Używam Apache CXF v 2.6.1. Otrzymuję błąd podczas korzystania z opcji mvn generate-Źródła:

rzucony przez JAXB: Nieoczekiwany <xsd:assert> pojawia się na linii 200 kolumna 3 z pliku schematu:

Badanie na błąd, dowiedziałem się że JAXB obsługuje tylko XML Schema 1.0, a ta funkcja jest dostępna w XML Schema 1.1. Jeśli to prawda, jakie mam inne opcje?

+0

możliwy duplikat [Kto korzysta z wersji XML Schema 1.1? Które wersje analizatora są obsługiwane? itp.] (http://stackoverflow.com/questions/4834664/who-is-using-xml-schema-1-1-version-which-parser-versions-support-it-etc) – lexicore

+0

Jeśli czytasz cały opis , nie jest duplikatem. Szukam rozwiązania, a nie tylko odpowiedzi na to pytanie. – user1555524

+0

Ok, przepraszam, nie byłam wystarczająco uważna. – lexicore

Odpowiedz

6

Nie, aktualna wersja JAXB nie obsługuje XSD 1.1. Zobacz te problemy, na przykład:

Aktualizacja:

Odnośnie rozwiązania. Osobiście uruchomiłbym XSLT, który usunąłby cały XSD 1.1. funkcje i zwróć wanilię XSD 1.0 jako wynik i skompiluj ją z JAXB. Nie wiem jednak, jak to zrobić technicznie z CXF.

+0

Dzięki! Myślę, że jest jasne, ale jakie są możliwe rozwiązania tego problemu? – user1555524

+0

@ user1555524 Zobacz aktualizację z sugestią. – lexicore

1

Zawsze możesz użyć schemron (http://schematron.com/) na górze XSD 1.0. To trochę trudne, ale dzięki temu będziesz mieć warunkowe funkcje sprawdzania poprawności XSD 1.1 i kompatybilność z parserem XSD.