title: In Java, how do I parse an xml schema (xsd) to learn what's valid at a given element?
body: <p>
  I'd like to be able to read in an XML schema (i.e. xsd) and from that know what are valid attributes, child elements, values as I walk through it.</p>
  
  <p>For example, let's say I have an xsd that this xml will validate against:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;root&gt;
    &lt;element-a type="something"&gt;
      &lt;element-b&gt;blah&lt;/element-b&gt;
      &lt;element-c&gt;blahblah&lt;/element-c&gt;
    &lt;/element-a&gt;
  &lt;/root&gt;
  </code></pre>
  
  <p>I've tinkered with several libraries and I can confidently get <code>&lt;root&gt;</code> as the root element.  Beyond that I'm lost.</p>
  
  <p>Given an element I need to know what child elements are required or allowed, attributes, facets, choices, etc.  Using the above example I'd want to know that <code>element-a</code> has an attribute <code>type</code> and may have children <code>element-b</code> and <code>element-c</code>...or must have children <code>element-b</code> and <code>element-c</code>...or must have one of each...you get the picture I hope.</p>
  
  <p>I've looked at numerous libraries such as XSOM, Eclipse XSD, Apache XmlSchema and found they're all short on good sample code.  My search of the Internet has also been unsuccessful.</p>
  
  <p>Does anyone know of a good example or even a book that demonstrates how to go through an XML schema and find out what would be valid options at a given point in a validated XML document? </p>
  
  <p><strong>clarification</strong></p>
  
  <p>I'm not looking to validate a document, rather I'd like to know the options at a given point to assist in creating or editing a document.  If I know "I am here" in a document, I'd like to determing what I can do at that point.  "Insert one of element A, B, or C" or "attach attribute 'description'".</p>