| Previous | Next
Empty ElementsIn many cases, it is useful to declare an element that cannot contain anything. Most of these elements convey all of their information via attributes or simply by their position in relation to other elements (e.g., the Let's add a contact-information element to the Example 16-8. addressdoc.xml with contact element<?xml version="1.0"?> <addr:address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://namespaces.anonymous.com/xmlnut/address address-schema.xsd" xmlns:addr="http://namespaces.anonymous.com/xmlnut/address" addr:language="en"> <addr:fullName> <addr:first>William</addr:first> <addr:middle>Scott</addr:middle> <addr:last>Means</addr:last> </addr:fullName> <addr:contacts> <addr:phone addr:label="888.737.1752"/> </addr:contacts> </addr:address> Supporting this new content requires further modifications to the schema document. Although it would be possible to declare the new element inline within the existing address-element declaration, for clarity it makes sense to create a new global type and reference it by name: <xs:element name="address"> <xs:complexType> <xs:sequence> <xs:element name="fullName"> . . . </xs:element> <xs:element name="contacts" type="addr:contactsType" minOccurs="0"/> </xs:sequence> <xs:attributeGroup ref="addr:nationality"/> </xs:complexType> </xs:element> The declaration for the new <xs:complexType name="contactsType"> <xs:sequence> <xs:element name="phone" minOccurs="0"> <xs:complexType> <xs:attribute name="number" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> The syntax used to declare an empty element is actually very simple. Notice that the complexContentThe preceding example actually took a shortcut with the schema language. One of the early When the <xs:element name="phone" minOccurs="0"> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:anyType"> <xs:attribute name="number" type="xs:string"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> The most common reason to use the |