In the course of my current studies into XSD (XML Schema Definition) and how to convert from XSD to Java Class and vice versa as well as to Database Design vv. I ran into a very simple way of creating an XSD document based on Java Class definitions. With a very simple piece of code, you can generate the XSD document in no time at all, using JDeveloper 11g and its JAXB libraries. Note: the code presented in this article will work in any environment that has the JAXB libraries available.....

In my example, I have a small class model:

I ensure that two libraries are associated with the JDeveloper project: JAXB and JEE 1.5:

 

Now the following class can be used to generate the XSD document derived from this class model:

package euro2008;<br /><br />import java.io.File;<br />import java.io.IOException;<br /><br />import javax.xml.bind.JAXBContext;<br />import javax.xml.bind.JAXBException;<br />import javax.xml.bind.SchemaOutputResolver;<br />import javax.xml.transform.Result;<br />import javax.xml.transform.stream.StreamResult;<br /><br /><br />public class XSDGenerator {<br />    public XSDGenerator() {<br />    }<br /><br />    public static void main(String[] args) throws JAXBException, IOException {<br /><br />        class MySchemaOutputResolver extends SchemaOutputResolver {<br />            File baseDir = new File(&quot;.&quot;);<br /><br />            public Result createOutput(String namespaceUri, <br />                                       String suggestedFileName) throws IOException {<br />                return new StreamResult(new File(baseDir, suggestedFileName));<br />            }<br />        }<br /><br />        JAXBContext context = JAXBContext.newInstance(Country.class, Match.class);<br />        context.generateSchema(new MySchemaOutputResolver());<br />    }<br />}<br />&nbsp;

When I run this class, a file called schema1.xsd is generated into the root directory of the project. When I refresh the project in JDeveloper, it will show up as a new resource: 

 

Resources

I just noted that Edwin Biemond wrote a very useful blog article on JAXB in JDeveloper 10g and 11g. So please look here: http://biemond.blogspot.com/2008/02/jaxb-20-in-jdeveloper-10g-and-11g.html .