Учебное пособие (1075724), страница 4
Текст из файла (страница 4)
В приведенном примере этим элементом является languages.9В случае если элемент не имеет содержимого, т.е. нет данных, которые ондолжен определять, он называется пустым. Начальный и конечные тэги пустогоэлемента как бы объединяются в один, и надо обязательно ставить косую чертуперед закрывающей угловой скобкой. Примером является элемент <empty />.(В HTML примерами пустых элементов являются <br/>, <hr/>, <img/>.)Если при определении элементов необходимо задать какие-либо параметры,уточняющие его характеристики, то имеется возможность использовать атрибутыэлемента. Атрибут – это пара (название = «значение»), которую надо задавать приопределении элемента в начальном тэге.Примеры использования элементов с атрибутами:<language id="1"><empty attr1="1" attr2="текст" />В пустых элементах нет содержимого, но атрибуты могут использоваться.Использование одинарных или двойных кавычек при задании значенияатрибута, в отличие от HTML, является обязательным.Обратим внимание, что простые элементы и атрибуты могут иметьодинаковое содержимое.
То есть можно использовать только простые элементыили только атрибуты.В начале развития XML в Интернете активно обсуждалось, когда лучшеиспользовать простые элементы, а когда атрибуты.По результатам дискуссий общепринятым является следующий подход: ввиде элементов задаются основные данные, характеризующие предметнуюобласть, а в виде атрибутов задаются данные, носящие вспомогательный,уточняющий характер.1.2.2 Директивы анализатораИнструкции, предназначенные для анализаторов языка (PI - ProcessingInstruction), описываются в XML документе при помощи специальных тэгов – <?и ?>. Эти инструкции используются для управления процессом разбора10документа.
Наиболее часто инструкции используются при определении типадокумента (например, <? xml version="1.0"?>).1.2.3 Секции CDATAЧтобы задать область документа, которую при разборе анализатор будетрассматривать как простой текст, игнорируя любые инструкции, но, в отличие откомментариев, иметь возможность использовать их в приложении, необходимоиспользовать тэги <![CDATA[ и ]]>. Внутри этого блока можно помещать любуюинформацию, которая может понадобиться программе-клиенту для выполнениякаких-либо действий. В область CDATA можно помещать, например, инструкцииJavaScript или данные, содержащие тэговые скобки, как в примере.1.2.4 КомментарииКомментариями является любая область данных, заключенная междупоследовательностями символов <!-- и -->. Такие же комментарии используются вдокументах HTML.1.2.5 Пространства именПространства имен позволяют использовать различные языки (словари) наоснове XML.Например, если разработаны языки разметки физических и химическихформул на основе XML, то оба они могут содержать тэг formula.
Пространстваимен позволяют «различать» физическую и химическую формулу, несмотря наодинаковое название тэгов.Более подробно использование пространств имен рассмотрено в разделе,посвященном XSLT.1.3 Правильные и действительные XML-документыXML–документы должны удовлетворять следующим требованиям:111. В заголовке документа помещается объявление XML, в которомуказываетсяязыкдополнительнаяразметкидокумента,информация.номерВозможноеговерсииуказаниеикодировки(encoding="Windows-1251").2. Каждый открывающий тэг, определяющий некоторую область данныхв документе, обязательно должен иметь парный закрывающий тэг.
Вотличие от HTML нельзя опускать закрывающие тэги.3. Документ содержит единственный корневой элемент.4. В XML учитывается регистр символов.5. Все значения атрибутов, используемых в определении тэгов, должныбыть заключены в одинарные апострофы или двойные кавычки.6. ВложенностьтэговвXMLстрогоконтролируется,поэтомунеобходимо следить за порядком следования открывающих изакрывающихтэгов.Пересечениеобластидействиятэговнеразрешается. Например, конструкция <a> <b>...</a> </b> будетнекорректной с точки зрения XML, так как пересекаются областидействия тэгов <a> и <b>.7. Вся информация, располагающаяся между начальным и конечнымтэгами, рассматривается в XML как данные, и поэтому учитываютсявсе символы форматирования (т.е.
пробелы, переводы строк, табуляциине игнорируются, как в HTML).Если XML- документ не нарушает эти правила, то он называетсяправильным(well-formed,иногдавстречаетсяпереводы«формально-правильный», «хорошо сформированный»), и все анализаторы, предназначенныедля разбора XML- документов, смогут корректно с ним работать. Приведенныйвыше пример документа является правильным XML–документом. Более подробноэти правила рассмотрены в спецификации XML [XML, 2000].Однако, кроме проверки на формальное соответствие грамматике языка(синтаксический контроль), в документе могут присутствовать средства контролянад содержанием документа (семантический контроль).12Для того чтобы обеспечить семантическую проверку XML-документов,необходимо использовать анализаторы, производящие такую проверку иназываемые верифицирующими.Существует два способа контроля правильности XML–документа: DTD–определения (Document Type Definition), которые остались от SGML, и схемыданных (XML Schema).
В отличие от SGML, определение DTD–правил или схем вXML не является обязательным.Разница между схемами и DTD состоит в том, что схемы данных самиявляются XML–документами, в DTD используется собственный синтаксис.Документ XML, который удовлетворяет своему DTD или схеме данных,называется действительным (valid).Обратим внимание, что в большинстве случаев вполне достаточно, чтобыдокумент был только правильным, например, при использовании технологииXSLT. Действительные документы используются относительно редко, в техслучаях, когда необходимо проверять структуру документа.1.4 Описание структур данных с помощью XMLВ примере 1.2 приведено описание структур данных с использованием XML.Множество:<?xml version="1.0" encoding="Windows-1251"?><!-- Множество --><Множество><Элемент_множества id="1"><Параметры/></Элемент_множества><Элемент_множества id="2"><Параметры/></Элемент_множества><!-- .
. . --><Элемент_множества id="N"><Параметры/></Элемент_множества>13</Множество>Элемент 2Элемент 1...Элемент NРис. 1.1. Описание множества.Массив:<?xml version="1.0" encoding="Windows-1251"?><!-- Массив --><Массив><Элемент_массива номер="1"><Значение/></Элемент_массива><Элемент_массива номер="2"><Значение/></Элемент_массива><!-- . . . --><Элемент_массива номер="n"><Значение/></Элемент_массива></Массив>Описание массива и множества не отличаются друг от друга. Элементымассива могут быть упорядочены по следованию друг за другом или по значениюатрибута «номер».
В множестве упорядоченность не учитывается.Дерево:<?xml version="1.0" encoding="Windows-1251"?><!-- Дерево --><Дерево><Ветвь_11><Лист/>14<Ветвь_21><Лист/><Лист/><Лист/></Ветвь_21><Ветвь_22><Лист/><Лист/></Ветвь_22></Ветвь_11><Ветвь_12><Лист/></Ветвь_12></Дерево>ДеревоВетвь 11ЛистВетвь 21ЛистЛистЛистВетвь 22ЛистЛистВетвь 12ЛистРис. 1.2.
Описание дерева.15Древовидные структуры являются «естественными» для модели данныхXML.Реляционная таблица:<?xml version="1.0" encoding="Windows-1251"?><!-- Таблица --><Таблица_1><Запись><Ключ>Значение ключевого поля</Ключ><Поле_1>Значение поля 1</Поле_1><Поле_2>Значение поля 2</Поле_2></Запись><!-- . .
. --><Запись><Ключ>Значение ключевого поля</Ключ><Поле_1>Значение поля 1</Поле_1><Поле_2>Значение поля 2</Поле_2></Запись></Таблица_1>Таблица содержит последовательность записей. Поля записи могут бытьпредставлены в виде элементов или атрибутов. Работать с реляционнымиданными в формате XML можно в Borland Delphi (технология Datapacket) и вADO.NET.При обмене реляционными данными в формате XML может возникнутьпроблема, связанная с загрузкой первичных и вторичных ключей.Реляционные таблицы с ключами:<?xml version="1.0" encoding="Windows-1251"?><База_данных><Таблица_1><Запись><Первичный_ключ>1</Первичный_ключ><Поле_1>Значение поля 1</Поле_1>16<Поле_2>Значение поля 2</Поле_2></Запись><!-- .
. . --></Таблица_1><Связанная_таблица><Запись><Первичный_ключ>1</Первичный_ключ><Поле_3>Значение поля 3</Поле_3><Вторичный_ключ_таблицы_1>1</Вторичный_ключ_таблицы_1></Запись><Запись><Первичный_ключ>2</Первичный_ключ><Поле_3>Значение поля 3</Поле_3><Вторичный_ключ_таблицы_1>1</Вторичный_ключ_таблицы_1></Запись><!-- .















