XML Schema File that validates my XML File
Overall your structures look OK. Your actual XML document could be indented more neatly, but it's OK.

I would recommend that you change your stars element to have an attribute. Using the PCDATA space is not a great place to put a numeric value.... Actually, I would recommend adding a stars attribute to the thoughts element (seems like a logical place to put it)....

&lt;xs:thoughts stars="5" &gt;
    Great book!
&lt;/xs:thoughts&gt;


This brings up the validation of the stars value too.... you have broken references in your XSD:

          &lt;xs:complexType&gt;
            &lt;xs:choice minOccurs="0" maxOccurs="1"&gt;
              &lt;xs:element ref="1" /&gt;
              &lt;xs:element ref="2" /&gt;
              &lt;xs:element ref="3" /&gt;
              &lt;xs:element ref="4" /&gt;
              &lt;xs:element ref="5" /&gt;
            &lt;/xs:choice&gt;
          &lt;/xs:complexType&gt;


The references 1 .... 5 are not declared. This is a problem. But, you should be using references (just not those ones....). You should be separating out your XSD types and then merging them up in complex-types with ref references. You should also be declaring the types outside of their usage... which makes things easier to manage.

Consider the following (which changes the stars validation, and location).

&lt;xs:simpleType name="startype"&gt;
  &lt;xs:restriction base="xs:string"&gt;
    &lt;xs:pattern value="[1-5]"/&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

.....
&lt;xs:element name="thoughts"&gt;
  &lt;xs:complexType&gt;
    &lt;xs:simpleContent&gt;
      &lt;xs:extension base="xs:string"&gt;
        &lt;xs:attribute name="stars" type="startype" /&gt;
      &lt;/xs:extension&gt;
    &lt;/xs:simpleContent&gt;
  &lt;/xs:complexType&gt;
&lt;/xs:element&gt;