This is a problem I encountered whilst working on a configuration XSD at work, I wanted to have a node that had content, with an enforced type along with attributes. An example of the XML I wanted to allow is below.
<Quotes>
<Quote author="George W. Bush">Rarely is the questioned asked: Is our children learning?</Quote>
</Quotes>
To specify a type for the node contents as well as some attributes, we need to use a type extension, specifying the type we want for the content as the base type. This is shown below.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Quotes">
<xs:complexType>
<xs:sequence>
<xs:element name="Quote">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="author" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
The XSD above will permit the XML we want, and allow content and attributes on the same node. I'll probably do some more stuff on XSDs in the near future.