{"id":9155,"date":"2017-11-04T16:41:04","date_gmt":"2017-11-04T15:41:04","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=9155"},"modified":"2018-09-07T16:25:36","modified_gmt":"2018-09-07T14:25:36","slug":"wie-kann-ein-xsd-schema-aus-java-pojos-mit-java-architecture-for-xml-binding-generiert-werden","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=9155","title":{"rendered":"Wie kann ein XSD-Schema aus Java POJOs mit &#8222;Java Architecture for XML Binding&#8220; generiert werden?"},"content":{"rendered":"<p>Wie kann man aus einem Pojo ein XSD Schema f\u00fcr zuk\u00fcnftige Validierungen generieren?<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb.png\" alt=\"\" width=\"2732\" height=\"2048\" class=\"aligncenter size-full wp-image-9156\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb.png 2732w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-300x225.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-768x576.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-1024x768.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Das geht ganz einfach mit <strong><a href=\"https:\/\/de.wikipedia.org\/wiki\/Java_Architecture_for_XML_Binding\" rel=\"noopener\" target=\"_blank\">JAXB<\/a><\/strong> und Eclipse Oxygen.1A.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-1.png\" alt=\"\" width=\"846\" height=\"610\" class=\"aligncenter size-full wp-image-9157\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-1.png 846w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-1-300x216.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/jaxb-1-768x554.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Wir erstellen dazu erst einmal zwei Klassen, <strong>Mindmap<\/strong> und <strong>Autor<\/strong> mit ein paar Eigenschaften. Optional annotieren wir die Mindmap Klasse mit <strong>@XmlRootElement<\/strong> und die Autor Klasse mit <strong>@XmlType<\/strong>.<!--more--><\/p>\n<p>Dann gehen wir auf das Package <strong>de.wenzlaff<\/strong> und rufen das Kontextmen\u00fc <strong>New &#8211; Other<\/strong> auf.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.03.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.03.png\" alt=\"\" width=\"749\" height=\"783\" class=\"aligncenter size-full wp-image-9158\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.03.png 749w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.03-287x300.png 287w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><\/p>\n<p>Dann geben wir JAXB ein und w\u00e4hlen &#8222;Schema from JAXB Classes&#8220;:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.25.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.25.png\" alt=\"\" width=\"526\" height=\"499\" class=\"aligncenter size-full wp-image-9159\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.25.png 526w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.25-300x285.png 300w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><\/a><\/p>\n<p>Dann vergeben wir einen Namen f\u00fcr das zu generierende Schema und w\u00e4hlen das Ziel-Verzeichnis:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.47.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.47.png\" alt=\"\" width=\"539\" height=\"583\" class=\"aligncenter size-full wp-image-9160\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.47.png 539w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.11.47-277x300.png 277w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><\/a><\/p>\n<p>Nun w\u00e4hlen wir noch die Klassen aus, f\u00fcr die wir das Schema generieren lassen wollen. Wir w\u00e4hlen Autor und Mindmap:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.00.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.00.png\" alt=\"\" width=\"539\" height=\"583\" class=\"aligncenter size-full wp-image-9161\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.00.png 539w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.00-277x300.png 277w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><\/a><\/p>\n<p>Nach klick auf <strong>Finish<\/strong>, wurde das XSD-Schema erfolgreich generiert:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.51.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.51.png\" alt=\"\" width=\"1669\" height=\"1059\" class=\"aligncenter size-full wp-image-9162\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.51.png 1669w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.51-300x190.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.51-768x487.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.12.51-1024x650.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Hier noch das Ergebnis, mit den jeweiligen Verbindungen:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.14.19.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.14.19.png\" alt=\"\" width=\"1678\" height=\"1063\" class=\"aligncenter size-full wp-image-9163\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.14.19.png 1678w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.14.19-300x190.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.14.19-768x487.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/11\/Bildschirmfoto-2017-11-04-um-16.14.19-1024x649.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Hier das XSD Schema:<\/p>\n<pre class=\"lang:xhtml decode:true \" >&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?&gt;\r\n&lt;xs:schema version=\"1.0\" xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n\r\n  &lt;xs:element name=\"mindmap\" type=\"mindmap\"\/&gt;\r\n\r\n  &lt;xs:complexType name=\"mindmap\"&gt;\r\n    &lt;xs:sequence&gt;\r\n      &lt;xs:element name=\"autor\" type=\"autor\" minOccurs=\"0\"\/&gt;\r\n      &lt;xs:element name=\"datum\" type=\"xs:dateTime\" minOccurs=\"0\"\/&gt;\r\n      &lt;xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\"\/&gt;\r\n      &lt;xs:element name=\"version\" type=\"xs:int\" minOccurs=\"0\"\/&gt;\r\n    &lt;\/xs:sequence&gt;\r\n  &lt;\/xs:complexType&gt;\r\n\r\n  &lt;xs:complexType name=\"autor\"&gt;\r\n    &lt;xs:sequence&gt;\r\n      &lt;xs:element name=\"id\" type=\"xs:int\" minOccurs=\"0\"\/&gt;\r\n      &lt;xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\"\/&gt;\r\n      &lt;xs:element name=\"vorname\" type=\"xs:string\" minOccurs=\"0\"\/&gt;\r\n    &lt;\/xs:sequence&gt;\r\n  &lt;\/xs:complexType&gt;\r\n&lt;\/xs:schema&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Wie kann man aus einem Pojo ein XSD Schema f\u00fcr zuk\u00fcnftige Validierungen generieren? Das geht ganz einfach mit JAXB und Eclipse Oxygen.1A. Wir erstellen dazu erst einmal zwei Klassen, Mindmap und Autor mit ein paar Eigenschaften. Optional annotieren wir die Mindmap Klasse mit @XmlRootElement und die Autor Klasse mit @XmlType.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5,79,7],"tags":[3063,2178,51,3064,807,102,3062],"class_list":["post-9155","post","type-post","status-publish","format-standard","hentry","category-eclipse","category-java","category-programmierung","category-tools","tag-generate","tag-java","tag-jaxb","tag-pojo","tag-schema","tag-xml","tag-xsd"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/9155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9155"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/9155\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9155"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}