title: trouble with recursive element in xsd schema
body: <p>I'm trying to create an xsd schema that will validate a map with an unknown depth of nodes.</p>
  
  <p>(In the schema below, i would like mapnode to contain, among other elements, more mapnodes.)</p>
  
  <p>This requires recursion that starts below the root node. </p>
  
  <p>Neither of the two methods described here seem to work for me: <a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=%2Fcom.ibm.db2.luw.xml.doc%2Fdoc%2Fc0051286.html" rel="nofollow">http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=%2Fcom.ibm.db2.luw.xml.doc%2Fdoc%2Fc0051286.html</a></p>
  
  <p>with the schema below, i get this error:
  src-resolve: Cannot resolve the name 'mapnode' to a(n) 'element declaration' component.</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-16"?&gt;
  &lt;xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
    &lt;xs:element name="knowledgemap"&gt;
      &lt;xs:complexType&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name="mapdata"&gt;
        &lt;xs:complexType&gt;
      &lt;xs:all&gt;
          &lt;xs:element name="title" type="xs:string"/&gt;
          &lt;xs:element name="version" type="xs:string"/&gt;
          &lt;xs:element name="author" type="xs:string"/&gt;
          &lt;xs:element name="authorid" type="xs:string"/&gt;
          &lt;xs:element name="width" type="xs:positiveInteger"/&gt;
          &lt;xs:element name="height" type="xs:positiveInteger"/&gt;
          &lt;xs:element name="xpos" type="xs:positiveInteger"/&gt;
          &lt;xs:element name="ypos" type="xs:positiveInteger"/&gt;
          &lt;xs:element name="scalefactor" type="xs:float"/&gt;
          &lt;xs:element name="mapid" type="xs:string"/&gt;
          &lt;xs:element name="beehivedata"&gt;
              &lt;xs:complexType&gt;
                  &lt;xs:sequence&gt;
                      &lt;xs:element name="maxresults" type="xs:positiveInteger"/&gt;
                      &lt;xs:element name="upiproduct" maxOccurs="unbounded"&gt;
                          &lt;xs:complexType&gt;
                              &lt;xs:sequence&gt;
                                  &lt;xs:element name="upiproduct" type="xs:string"/&gt;
                                  &lt;xs:element name="upiversion" type="xs:string"/&gt;
                                  &lt;xs:element name="upilanguage" type="xs:string"/&gt;
                              &lt;/xs:sequence&gt;
                          &lt;/xs:complexType&gt;
                      &lt;/xs:element&gt;
                  &lt;/xs:sequence&gt;
              &lt;/xs:complexType&gt;
          &lt;/xs:element&gt;
          &lt;xs:element name="styledata"&gt;
              &lt;xs:complexType&gt;
                  &lt;xs:sequence&gt;
                      &lt;xs:element name="nodelevel" maxOccurs="unbounded"&gt;
                          &lt;xs:complexType&gt;
                              &lt;xs:sequence&gt;
                                  &lt;xs:element name="level"/&gt;
                                  &lt;xs:element name="width"/&gt;
                                  &lt;xs:element name="height"/&gt;
                                  &lt;xs:element name="fontsize"/&gt;
                                  &lt;xs:element name="fontcolor"/&gt;
                                  &lt;xs:element name="fontweight"/&gt;
                                  &lt;xs:element name="strokecolor"/&gt;
                                  &lt;xs:element name="strokewidth"/&gt;
                                  &lt;xs:element name="linkcolor"/&gt;
                                  &lt;xs:element name="linkhighlight"/&gt;
                                  &lt;xs:element name="colorunexplored"/&gt;
                                  &lt;xs:element name="colorexplored"/&gt;
                                  &lt;xs:element name="colorshadow"/&gt;
                                  &lt;xs:element name="iconsize"/&gt;
                              &lt;/xs:sequence&gt;
                          &lt;/xs:complexType&gt;
                      &lt;/xs:element&gt;
                  &lt;/xs:sequence&gt;
              &lt;/xs:complexType&gt;
          &lt;/xs:element&gt;
      &lt;/xs:all&gt;
            &lt;/xs:complexType&gt;
          &lt;/xs:element&gt;
          &lt;xs:element name="map"&gt;
              &lt;xs:complexType&gt;
          &lt;xs:sequence&gt;
              &lt;xs:element name="mapnode"&gt;
                  &lt;xs:complexType&gt;
                      &lt;xs:sequence&gt;
                          &lt;xs:element name="nodedata"&gt;
                              &lt;xs:complexType&gt;
                                  &lt;xs:sequence&gt;
                                      &lt;xs:element name="title" type="xs:string"/&gt;
                                      &lt;xs:element name="description" type="xs:string"/&gt;
                                      &lt;xs:element name="xpos" type="xs:integer"/&gt;
                                      &lt;xs:element name="ypos" type="xs:integer"/&gt;
                                      &lt;xs:element name="nodeid" type="xs:string"/&gt;
                                      &lt;xs:element name="level" type="xs:positiveInteger"/&gt;
                                      &lt;xs:element name="parent" type="xs:string"/&gt;
                                      &lt;xs:element name="localconnection" type="xs:string"/&gt;
                                      &lt;xs:element name="parentconnection" type="xs:string"/&gt;
                                      &lt;xs:element name="covericon" type="xs:string"/&gt;
                                      &lt;xs:element name="activesocket"  type="xs:string" maxOccurs="unbounded"/&gt;                               
                                  &lt;/xs:sequence&gt;
                              &lt;/xs:complexType&gt;
                          &lt;/xs:element&gt;
                          &lt;xs:element name="contentitem" maxOccurs="unbounded"&gt;
                              &lt;xs:complexType&gt;
                                  &lt;xs:all&gt;
                                      &lt;xs:element name="title" type="xs:string"/&gt;
                                      &lt;xs:element name="contentid" type="xs:string"/&gt;                                 
                                      &lt;xs:element name="description" type="xs:string"/&gt;
                                      &lt;xs:element name="type" type="xs:string"/&gt;
                                      &lt;xs:element name="size" type="xs:string"/&gt;  
                                      &lt;xs:element name="col" type="xs:positiveInteger"/&gt;
                                      &lt;xs:element name="row" type="xs:positiveInteger"/&gt;                              
                                      &lt;xs:element name="contenturl" type="xs:string"/&gt;
                                      &lt;xs:element name="contenticon" type="xs:string"/&gt;
                                      &lt;xs:element name="contentdata"  type="xs:string" minOccurs="0"/&gt;
                                  &lt;/xs:all&gt;
                              &lt;/xs:complexType&gt;                       
                          &lt;/xs:element&gt;
                          &lt;xs:element  ref="mapnode" minOccurs="0" maxOccurs="unbounded"/&gt;
                      &lt;/xs:sequence&gt;
                  &lt;/xs:complexType&gt;
              &lt;/xs:element&gt;
          &lt;/xs:sequence&gt;
              &lt;/xs:complexType&gt;
          &lt;/xs:element&gt;
       &lt;/xs:sequence&gt;
      &lt;/xs:complexType&gt;
    &lt;/xs:element&gt;
  &lt;/xs:schema&gt;
  </code></pre>