June 2008
Intermediate to advanced
986 pages
27h 8m
English
For our final example, we’ll create an element with mixed content. Mixed content means this element can contain text and other elements. Here’s an expanded schema that declares a second element; the first element can contain any combination of text and the second element:
<?xml version="1.0" encoding="UTF-8"?> <!-- content3.xsd --> <xs:schema xmlns="http://www.oreilly.com/xslt" targetNamespace="http://www.oreilly.com/xslt" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="content3"> <xs:complexType mixed="true"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element ref="emphasis"/> </xs:sequence> <xs:attribute name="color" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="emphasis" type="xs:string"/> </xs:schema>
Now we’ve declared a complex type that contains mixed content, an element, and an attribute. Here’s a valid document in our new schema:
<?xml version="1.0" encoding="utf-8"?> <!-- content3.xml --> <content3 xmlns="http://www.oreilly.com/xslt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oreilly.com/xslt content3.xsd" color="blue"> Our element <emphasis>now</emphasis> contains some text! It's getting <emphasis>more useful</emphasis> all the time. </content3>
One final detail: in the schema, we declared the <emphasis> element outside the complex
type and referred to it in the declaration of the <content3> element. If we had declared
<emphasis> like this:
<xs:complexType ...
Read now
Unlock full access