Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции OOP c#.doc
Скачиваний:
44
Добавлен:
22.09.2019
Размер:
3.38 Mб
Скачать

2.8. Введение в xml

XML – это способ записи структурированных данных. Под «структурированными данными» обычно подразумевают такие объекты, как электронные таблицы, адресные книги, конфигурационные параметры. XML-данные содержатся в документе, в роли которого может выступать файл, поток или другое хранилище информации, способное поддерживать текстовый формат.

Любой XML-документ строится по определенным правилам. XML-данные состоят из набора элементов. Каждый элемент определяется при помощи имени и открывающего и закрывающего тэга. Открывающий тэг элемента записывается в форме <имя_элемента>, закрывающий тэг – в форме </имя_элемента>. Между открывающим и закрывающим тэгами размещается содержимое элемента. Приведем пример простейшего элемента:

<name>This is a text</name>

Элемент может содержать вложенные элементы с другими именами, но в XML-документе всегда должен быть единственный элемент, называемый корневым, никакая часть которого не входит в содержимое любого другого элемента.

<Group>

<student>

<name>

Ivanov

</name>

</student>

<student>

<name>

Petrov

</name>

<ball>

4.0

</ball>

</student>

</Group>

В приведенном примере XML-документ содержит корневой элемент с именем Group, который, в свою очередь, содержит два элемента с именем student. Обратите внимание на разное количество вложенных элементов у первого и второго «студентов» (это допустимо).

Имена тегов элементов чувствительны к регистру! Элементы, задаваемые открывающим и закрывающим тегами, должны быть правильно вложены друг в друга. Следующий пример не является правильным:

<text>

<bold><italic>XML</bold></italic>

</text>

Элемент без содержимого может быть записан в специальной форме: <name/>.

Имена элементов могут содержать буквы, цифры, дефисы (-), символы подчеркивания (_), двоеточия (:) и точки (.), однако начинаться они могут только с буквы или символа подчеркивания. Двоеточие может быть использовано только в специальных случаях, когда оно разделяет так называемое пространство имен. Имена элементов, начинающиеся с xml, вне зависимости от комбинации регистров букв в этом выражении зарезервированы для нужд стандарта.

Элемент может иметь ни одного, один или несколько атрибутов. Правила на имена атрибутов накладываются такие же, как и на имена элементов. Имена атрибутов отделяются от их значений знаком =. Значение атрибута заключается в апострофы или в двойные кавычки. Если апостроф или двойные кавычки присутствуют в значении атрибута, то используются те из них, которые не встречаются в этом значении. Приведем пример элементов с атрибутами:

<elements-with-attributes>

<el _ok = "yes"/>

<one attr = "a value"/>

<several first = "1" second = "2" third = "333"/>

<apos_quote case1 = "John's"

case2 = 'He said: "Hello, world!" '/>

</elements-with-attributes>

Символы < и & не могут быть использованы в тексте, так как они используются в разметке XML-документа. Если эти символы необходимы, следует использовать < вместо < и & вместо &. Символы >, ", и ' также могут быть заменены >, " и ', соответственно.

XML-документ может содержать комментарии, записываемые в обрамлении <!-- и -->. В тексте комментариев не должна содержаться последовательность из двух знаков дефиса:

<!-- Group 252001 list -->

<Group>

<student>

<name>

Ivanov

</name>

</student>

</Group>

Документ может содержать инструкции по обработке (PI), несущие информацию для приложений. Инструкции по обработке записываются в обрамлении <? и ?>.

<example>

<?perl lower-to-upper-case ?>

<?web-server add-header = "university" ?>

<text>Some text</text>

</example>

Секция CDATA используется для того, чтобы обозначить части документа, которые не должны восприниматься как разметка. Секция CDATA начинается со строки <![CDATA[ и заканчивается строкой ]]>. Внутри самой секции не должна присутствовать строка ]]>.

<example>

<![CDATA[ <aaa>bb&cc<<<]]>

</example>

XML-документ может, но не обязан начинаться с XML-декларации, определяющей используемую версию XML:

<?xml version="1.0"?>

Декларация может содержать необязательный атрибут, указывающий кодировку XML-документа:

<?xml version="1.0" encoding="UTF-16"?>

Если XML-документ оформлен по описанным выше правилам, то он называется хорошо оформленным XML-документом. Если хорошо оформленный документ удовлетворяет некой схеме, задающей структуру и содержание, то документ называется правильно оформленным. Существует несколько способов для описания приемлемых схем документов. Один из способов – использование блоков определения типа документа (document type definitions, DTD). Современным способом считается использование языка XML Schema Definitions (XSD), который сам основан на XML.

Описание XSD может потребовать нескольких лекций, поэтому просто приведем пример файла students.xsd на этом языке:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

elementFormDefault="qualified"

attributeFormDefault="unqualified">

<xs:element name="Students">

<xs:complexType>

<xs:choice maxOccurs="unbounded">

<xs:element name="student">

<xs:complexType>

<xs:sequence>

<xs:element name="name" type="xs:string"/>

<xs:element name="year" type="xs:gYear"/>

<xs:element name="ball" type="xs:double"

minOccurs="0"/>

</xs:sequence>

<xs:attribute name="Department" type="xs:string"

use="optional"/>

</xs:complexType>

</xs:element>

</xs:choice>

</xs:complexType>

</xs:element>

<xs:attribute name="Department"/>

</xs:schema>

Данная схема описывает правильные документы, которые должны содержать корневой элемент Students, элемент Students должен содержать один или несколько элементов student, а элемент student должен содержать один элемент name, один элемент year и может содержать элемент ball. Также определен порядок и тип элементов, и наличие необязательного атрибута Department у элемента student.

Существует большое количество разнообразного программного обеспечения для работы с XML-схемами, в частности, для создания схем и проверки соответствия XML-документа некоторой схеме. Упомянем такие программы как XMLSPY и утилиту Xsd.exe, которая входит в состав .NET SDK.