Anonymous Types
Everything we’ve done to this point has used anonymous
types. That means we used <xs:simpleType> or <xs:complexType>, but we didn’t give
those types a name. That was OK for our simple schemas because we
didn’t want to reuse those datatypes outside the element in which they
were defined. From now on, we’ll give our datatypes a name so we can
use them whenever we need to. Here’s the difference between an
anonymous type and a named type:
<?xml version="1.0" encoding="UTF-8"?> <!-- content4.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="content4a"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="color" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:complexType name="content4b-type"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="color" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name="content4b" type="content4b-type"/> </xs:schema>
The first element in the schema, <content4a>, uses an anonymous type.
The second element has the exact same structure, but it uses the named
datatype we created. The difference, of course, is that we can use the
named datatype anywhere, while the anonymous type exists only inside the
declaration of element <content4a>.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access