Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 467
Ильдар Шаукатович Хабибуллин
Далее в листинге 28.4 определяются оставшиеся типы: addressType, phone-listType и ruDate. Необходимость определения простого типа ruDate возникает потому, что встроенный в схему XML тип date предписывает задавать дату в виде 2004-10-22, а в России принят формат 22.10.2004. Тип ruDate определяется как
Безымянные типы
Все описанные в листинге 28.4 типы используются только один раз. Поэтому необязательно давать типу имя. Схема XML, как говорилось ранее, позволяет определять безымянные типы. Такое определение дается внутри описания элемента. Именно так в листинге 28.4 описаны атрибуты элемента name. В листинге 28.5 показано упрощенное описание схемы адресной книги.
Листинг 28.5. Схема документа XML с безымянными типами
<?xml version=,1.0,?>
<xsd:schema xmlns:xsd=’
targetNamespace='>
<xsd:element name='notebook'>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=iperson’ maxOccurs=iunbounded’>
<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='surnamel type=’xsd:string’ use=’required’ /> </xsd:complexType>
</xsd:element>
<xsd:element name=’birthday’>
<xsd:simpleType>
<xsd:restriction base=’xsd:string’>
<xsd:pattern value=’[0-9]{2}.[0-9]{2}.[0-9]{4}’ /> </xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name=’address’ maxOccurs=’unbounded’>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=’street’ type=’xsd:string’ />
<xsd:element name=’cityi>
<xsd: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:positiveIntegeri />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=’phone-list’>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=’work-phone’ type=’xsd:string’
minOccurs=’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.