Все описанные в листинге 14.3 типы используются только один раз. Поэтому необязательно давать типу имя. Схема XML, как говорилось выше, позволяет определять безымянные типы. Такое определение дается внутри описания элемента. Именно так в листинге 14.3 описаны атрибуты элемента name. В листинге 14.4 показано упрошенное описание схемы адресной книги.
Листинг 14.4. Схема документа XML с безымянными типами
<?xml version='1.0'?>
<xsd:schema. xmlns:xsd=”http://www.w3.org/2001/XMLSchema'”>
<xsd: element. Name”notebook” >
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”person” maxOccurs=”unbounded”> <xsd:complexType>
<xsd:sequence>
<xsd; element name=”name” >
<xsd: complexType>
<xsd:attribute name=”first”
type=”xsd:string” use=”optional” />
<xsd;attribute name=”second”
type=”xsd:string” use=”optional” />
<xsd: attribute: name=”surname”
type=”xsd:string” use=”required" />
</xsd:complexType>
</xsd: element >
<xsd;element name=”birthday”>
<xsd:simp1eType>
<xsd: restriction base=”xsd:string”>
<xsd: pattern value=”[0-9] {2}. [0-9] {2}. [0-9] {4}” /> </xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:elementt name=”address” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”street” type=”xsd:string” />
|
|
<xsd:element name=”city”>
<xsa:complexType>
<xsd:simpleContent>
<xsd: extension base=”xsd: string” >
<xsd:attribute name=”type” type=”xsd:string”
use=”optional” default=”gorod” />
</xsd: extension>
</xsd: simpleContent>
</xsd: complexType>
</xsd:element>
<xsd:element name=”zip” type=”xsd:positiveInteger” />
</xsd:sequence>
</xsd:complexType>
<xsd:element name=”phone-list”>
<xsd: complexType>
<xsd:sequence>
<xsd:element name=”work-phone” type=”xsd:string”
min0ccurs=”0” maxOccurs=”unbounded” />
<xsd:element name=”home-phone” type=”xsd:string” minOccurs=”0” maxOccurs=”unbounded” />
</xsd:sequence>
</xsd: complexType>
</xsd:element>
</xsd:sequence>
</xsd: complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Еще одно упрощение можно сделать, используя пространство имен по умолчанию. Посмотрим, какие пространства имен применяются в схемах XML.