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.
Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.