Allowing Mixed Content
The mixed attribute of the
complexType element controls whether character data may appear
within the body of the element with which it is associated. To
illustrate this concept, Example
17-9 gives us a new schema that will be used to validate
form-letter documents.
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema">
<xs:element name="letter">
<xs:complexType mixed="true"/>
</xs:element>
</xs:schema>This schema seems to declare a single element called letter that may contain character data and
nothing else. But attempting to validate the following document
produces an error, as shown in Example 17-10.
<letter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="formletter.xsd">Hello!</letter>
The following error is generated:
The content of element type "letter" must match "EMPTY".
This is because there’s no complex content for the letter element. Setting mixed to true is not the same as declaring an
element that may contain a string. The character data may only
appear in relation to other complex content, which leads to the
subject of relative element positioning.