Лабораторная работа № 1. Создание XML-документа
Теория
XML (от англ. eXtensible Markup Language) – расширяемый язык разметки. Он создан для структурирования, хранения и передачи информации. XML – это общий инструмент передачи данных между всеми видами приложений. В языке XML нет предопределенных тегов, автор определет свои языковые теги и свою структуру документа.
Пример XML документа
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Анна</to>
<from>Дмитрий</from>
<heading>Напоминание</heading>
<body>Не забудь обо мне в эти выходные!</body>
</note>
Первая строка – это XML декларация. Здесь определяется версия XML (1.0). На следующей строке описывается корневой элемент документа: <note>. Следующие 4 строки описывают дочерние элементы корневого элемента: <to>Анна</to>, <from>Дмитрий</from>, <heading>Напоминание</heading>, <body>Не забудь обо мне в эти выходные!</body>. И, наконец, последняя строка определяет конец корневого элемента: </note>.
Исходя из этого примера, можно смело предположить, что в этом XML документе содержится заметка от Дмитрия к Анне. И все вполне понятно.
Правила синтаксиса XML- документа
XML-документы должны удовлетворять следующим правилам:
- все XML элементы должны иметь закрывающий тег;
- теги XML являются регистрозависимыми;
- все элементы обязаны соблюдать корректную вложенность;
- значения атрибутов должны заключаться в кавычки;
- XML документ должен содержать один корневой элемент, который будет родительским для всех других элементов;
- учитываются все символы форматирования (т.е. пробелы, переводы строк, табуляции не игнорируются, как в HTML).
Если XML документ составлен в соответствии с приведенными синтаксическими правилами, то говорят, что это «синтаксически верный» или «корректно сформированный» XML документ.
Комментарии в XML
<!—это комментарий -->.
Подключение файла таблицы стилей
<?xml-stylesheet type="text/css" href="1.css"?>.
Правила написания имен XML
XML элементы должны следовать следующим правилам написания имен:
- имена могут содержать буквы, числа и другие символы;
- имена не могут начинаться с цифры или символа пунктуации;
- имена не могут начинаться с сочетания "xml" (или XML, или Xml и т.п.);
- имена не могут содержать пробельные символы.
В качестве имен можно использовать любые слова. Нет зарезервированных слов.
Данная таблица была создана XML-документом с подключением css. Структура файла представлена ниже:
<?xmlversion="1.0" encoding="UTF-8"?>
<!--FileName: 1.xml>
<?xml-stylesheet type="text/css" href="1.css"?>
<FACULTY>
<SPECIALIZATION>
<NAME>
<TIME>
<EXAM>
<PAGES>
<PASSING>
</SPECIALIZATION>
<SPECIALIZATION>
<NAME>
<TIME>
<EXAM>
<PAGES>
<PASSING>
</SPECIALIZATION>
<SPECIALIZATION>
<NAME>
<TIME>
<EXAM>
<PAGES>
<PASSING>
</SPECIALIZATION>
<SPECIALIZATION>
<NAME>
<TIME>
<EXAM>
<PAGES>
<PASSING>
</SPECIALIZATION>
</FACULTY>
В css-файле для каждого тэга описаны свойства:
SPECIALIZATION
{ display:block;
text-align:center;
margin:10px 20px 10px 20px;
margin-top:12pt;
border-style:double;
border-color:#8C0088;
font-size:15pt}
NAME
{ font-style:italic;
text-align:center}
TIME
{ display:block;
text-align:center;
font-weight:bold;
border-top:double;
border-color:#8C0088}
EXAM
{ display:block;
text-align:center;
border-top:double;
border-color:#8C0088}
PAGES
{ display:block;
text-align:center;
border-top:double;
border-color:#8C0088}
PASSING
{ display:block;
text-align:center;
border-top:double;
border-color:#8C0088}
FACULTY
{ display:block;
margin:50px 100px;
border-style:solid}
Задание к лабораторной работе № 1
Создайть XML-документ, который будет содержать информацию по вашей специальности в других университетах (университет, проходной балл, план набора, город, в котором размещен университет). При выполнении задания используйте css.
Лабораторная работа № 2. Создание валидных XML-документов
Валидные XML документы
Валидный XML документ не то же самое, что и синтаксически верный XML документ.
Первое правило для валидного XML документа то, что он должен быть синтаксически верным.
Второе правило – валидный XML документ должен соответствовать определенному типу документов.
Правила, определяющие допустимые элементы и атрибуты для XML документа, называются определениями документа или схемами документа.
С XML можно использовать различные типы определений документа:
- оригинальное определение типа документа (DTD)
- более новый тип определений, основанный на XML, – XML схема.
XML DTD
Цель DTD состоит в том, чтобы определить структуру XML документа. Это делается путем определения списка допустимых элементов.
В приведенном ниже примере
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>Анна</to>
<from>Дмитрий</from>
<heading>Напоминание</heading>
<body>Не забудь обо мне в эти выходные!</body>
</note>
декларация DOCTYPE является ссылкой на внешний файл определений типов документа (DTD). Содержимое этого файла показано ниже.
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
Приведенное выше DTD интерпретируется следующим образом:
- !DOCTYPE note определяет, что корневым элементом документа является note;
- !ELEMENT note определяет, что элемент note содержит четыре элемента: to, from, heading, body;
- !ELEMENT to определяет, что элемент to должен быть типа "#PCDATA";
- !ELEMENT from определяет, что элемент from должен быть типа "#PCDATA"
- !ELEMENT heading определяет, что элемент heading должен быть типа "#PCDATA"
- !ELEMENT body определяет, что элемент body должен быть типа "#PCDATA"
#PCDATA означает разбираемые текстовые данные.
С DTD XML файл может нести собственный формат и можно быть увереным, что получаемые из внешних источников данные будут корректными.
XML схема
Также, как и DTD, XML схемы описывают структуру XML документа. XML документ, прошедший проверку по XML схеме, является "синтаксически верным" и "валидным".
Пример XML схемы
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Приведенная выше схема интерпретируется следующим образом:
- <xs:element name="note"> определяет элемент "note";
- <xs:complexType> у элемента "note" комплексный тип;
- <xs:sequence> комплексный тип – эпоследовательность элементов;
- <xs:element name="to" type="xs:string"> у элемента "to" строковый тип (текст);
- <xs:element name="from" type="xs:string"> у элемента "from" строковый тип;
- <xs:element name="heading" type="xs:string"> у элемента "heading" строковый тип;
- <xs:element name="body" type="xs:string"> у элемента "body" строковый тип.
Как видно из примера, каждая XML схема состоит с корневого элемента «schema» и обязательного пространства имен «http://www.w3.org/2001/XMLSchema». Далее идет описание схемы и собственно сама схема. При этом очень часто в очень качественных схемах описание бывает куда большим, чем сама XML Schema.
XML схема мощнее DTD, так как:
- XML схема пишется на XML;
- XML схема легко расширяется;
- XML схема поддерживает типы данных;
- XML схема поддерживает пространства имен;
- XML схема поддерживает типы данных.
Задание к лабораторной работе № 2
На основе прошлой лабораторной работы составьте валидный XML-документ, используя 2 способа: с помощью DTD, а также XML схемы.
3.3. Лабораторная работа № 3. Отображение XML
с использованием XSLT
XSL является приложением XML, т. е. XSL-таблица представляет собой корректно сформированный XML-документ, который отвечает правилам XSL. Подобно любому XML-документу, XSL-таблица стилей содержит простой текст, и вы можете создать ее с помощью вашего любимого текстового редактора.
Связывание XSL-таблицы стилей с XML-документом. Вы можете связать XSL-таблицу стилей с XML-документом, включив в документ инструкцию по обработке xml-stylesheet, которая имеет следующую обобщенную форму записи:
<?xml-stylesheet type="text/xsl" href="3.xslt"?>
Таблица стилей при этом должна размещаться на том же домене, что и XML-документ, с которым вы ее связываете.
Если вы не связали XML-документ ни с CSS-таблицей, ни с XSL-таблицей стилей, Internet Explorer 5 отобразит документ с помощью встроенной XSL-таблицы, которая используется по умолчанию. Эта таблица стилей отображает исходный XML-текст в виде дерева с возможностью свертывания/развертывания уровней.
В отличие от CSS, содержащей правила, XSL-таблица стилей включает один или несколько шаблонов, каждый из которых содержит информацию для отображения в определенной ветви элементов в XML-документе.
Каждая XSL-таблица стилей должна иметь элемент Документ, известный как корневой элемент, является XML-элементом верхнего уровня, который содержит все остальные элементы.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheetversion="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Элемент Документ xsl:stylesheet служит не только хранилищем других элементов, но также идентифицирует документ как XSL-таблицу стилей. Все XSL-элементы принадлежат пространству имен xsl – т. е. вы предваряете имя каждого XSL-элемента префиксом xsl:, обозначающим пространство имен.
Элемент Документ xsl:stylesheet XSL-таблицы стилей должен содержать один или несколько шаблонов элементов, которые для краткости будем называть шаблонами.
<xsl:template match="/">
<!-- дочерние элементы … -->
</xsl:template>
Браузер использует шаблон для отображения определенной ветви элементов в иерархии XML-документа, с которым вы связываете таблицу стилей. Атрибут match шаблона указывает на определенную ветвь.
Значение атрибута match носит название образца (pattern). Образец в данном примере ("/") представляет корневой элемент всего XML-документа.
Каждая XSL-таблица стилей должна содержать один и только один шаблон с атрибутом match, который имеет значение "/".
Корневой образец ("/") не представляет элемент Документ (или корневой элемент) XML-документа. Он представляет весь документ, для которого элемент Документ является дочерним. (Т. е. он аналогичен корневому узлу Document в объектной модели документа DOM)
Пример использования XSL-таблицы стилей для предоставления информации в виде таблицы:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2> Список специальностей факультета ИТ</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:center">Специальность</th>
<th style="text-align:center">Срок обучения</th>
<th style="text-align:center">Предметы ЦТ</th>
<th style="text-align:center">План набора</th>
<th style="text-align:center">Проходной балл</th>
</tr>
<xsl:for-each select="FACULTY/SPECIALIZATION">
<tr>
<td><xsl:value-of select="NAME"></td>
<td><xsl:value-of select="TIME"></td>
<td><xsl:value-of select="EXAM"></td>
<td><xsl:value-of select="PAGES"></td>
<td><xsl:value-of select="PASSING"></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Оператор пути в значении атрибута select относится к текущемуэлементу. Каждый контекст внутри XSL-таблицы стилей относится к текущему элементу. Если вы опустите атрибут select для XSL-элемента value-of, элемент будет осуществлять вывод текстового содержимого плюс текстовое содержимое всех дочерних элементов в текущий элемент.
Порядок элементов value-of в шаблоне определяет порядок, в котором браузер отображает эти элементы. Таким образом, даже из этой простой таблицы стилей вы можете понять, что XSL-таблица стилей является гораздо более гибкой, чем CSS, которая всегда отображает элементы в том порядке, в котором они следуют в документе.
Элемент for-each выполняет две основные задачи:
- осуществляет вывод блока элементов, содержащихся внутри элемента for-each, повторяя его для каждого XML-элемента в документе, отвечающего образцу, присвоенному атрибуту select элемента for-each;
- внутри элемента for-each задает текущий элемент, устанавливаемый атрибутом select элемента for-each.
Не нужно включать в XSL-шаблон элементы, представляющие элементы HTML или BODY, которые являются стандартными составными частями HTML-страницы, поскольку браузер сам эффективно их формирует.
Каждый из элементов, представляющих HTML-разметку, должен быть корректно сформированным XML-элементом, а также стандартным HTML-элементом. Не забывайте, что XSL-таблица стилей является XML-документом.
Задание к лабораторной работе № 3
Оформите задание лабораторной работы № 1 через подключение XSLT.