xml01

advertisement
XML и XSLT
(1)
Матросов Александр Васильевич
Санкт-Петербургский
государственный университет
Обработка текста (1)
•
•
•
•
Обработка текста — одна из дисциплин информатики (науки о
компьютерах, их использовании и развитии), занимающаяся
разработкой и реализацией компьютерных систем автоматизации
процессов создания и опубликования документов
Первая волна — компьютерные системы набора и форматирования
текста (макет – rendition) (troff, RTF, LaTeX) (разметка форматирования)
Макет преобразовывался в воспринимаемое человеком представление
документа (развился в MS Word и Adobe PageMaker, но с улучшенным
интерфейсом — What You See Is What You Get (WYSIWIG))
LaTeX
Это размеченный документ. В нем можно найти выделенные
\t{курсивом} или \b{полужирным} шрифтом слова. Обратить
внимание читателя на какой-либо термин можно также его
\large{выделением} шрифтом большего размера.
•
(ЗАДАНИЕ: сохранить в Word файл, содержащий единственное слово,
например «RTF», в формате RTF)
Подобный процесс отлично подходит, если единственная цель –
напечатать документ на компьютере, описать его макет представления
и затем напечатать его
2
Обработка текста (2)
• IBM (конец 60-х) – система хранения, поиска, управления и
опубликования юридических документов (Charles Goldfarb, Ed
Mosher, Ray Lorie)
• Язык должен предоставлять:
– общее представление данных: разметка
• очевидно использование разными инструментами обработки единого
языка текстового документа на базе разметки
– разметка должна быть расширяемая
• чтобы поддерживать бесчисленное множество разнообразных типов
информации (словари)
• концепция обобщающей разметки (generalized markup), исключающей
любую информацию об отображении текста
• информация о форматировании элементов разметки задается в
отдельном файле, который может быть присоединен к исходному
документу (таблицы стилей)
• документ, называемый спецификацией преобразования, описывает
преобразование исходного документа к документу, состоящему из
подмножества элементов исходного словаря или вообще другого
словаря
3
Обработка текста (3)
• Язык должен предоставлять:
– создание правил для типов документов
• существование механизма формального описания правил,
используемых документами общего типа, а также проверки документа
этим правилам (семантическая проверка)
• основанная на правилах разметка:
Определение типа
документа
(DTD или XML-схема)
Внесение
ограничений
Абстрактный документ
(с использованием
обобщающей разметки)
Документ со
спецификацией
форматирования
Описывает
необходимое
представление
Представление
документа на
устройстве отображения
4
На пути к XML (1)
•
•
•
•
•
•
В 1969 году группа сотрудников IBM разработала язык, который
соответствовал их видению разметки документа, Generalized Markup
Language (GML – Goldfarb, Mosher, Lorie?)
До 1974 года Goldfarb испытывал концепцию «подтверждающего
правильность синтаксического анализатора» («validating parser») (по его
утверждению это и есть год рождения SGML)
C 1978 по 1986 годы под его руководством был разработан стандарт
(ISO 8879) языка Standard Generalized Markup Language (SGML)
В 1989 году Tim Berners-Lee предложил совместное использование
информации в рамках CERN в виде текстовых документов с
гиперссылками, а его коллега Anders Berglund посоветовал
использовать SGML-подобный синтаксис
Из простого примера типа документа в стандарте SGML быстро была
разработана гипертекстовая версия, названная языком разметки
гипертекста (Hypertext Markup Language – HTML)
Эта гипертекстовая система была названа World Wide Web
– ее простота, как считают, послужила к ее успеху: простота HTML и других
спецификаций Web позволяет программистам быстро строить системы и
целые инструменты для работы в рамках Web
5
На пути к XML (2)
•
HTML продемонстрировал сильные стороны SGML
– за небольшими исключениями типы элементов являются обобщающими и
описательными (наглядными), а не форматирующими конструкциями, как в
TeX или MS Word (документ можно отобразить на текстовом экране, на
графическом пользовательском интерфейсе и даже прочесть через звуковые
устройства для слабовидящих)
– для разметки документа использовалось предложенное в SGML соглашение
об угловых скобках, что позволяло создавать его в любом текстовом
редакторе или процессоре, а также в любой существующей компьютерной
системе
•
HTML показал и свои слабые стороны
– использовал фиксированное число типов элементов
– не являлся расширяемым (новые типы документов создавать нельзя)
– точное определение было дано только по прошествии нескольких лет после
изобретения (DTD) (уже существовало огромное число документов, не
соответствовавших точному определению)
•
HTML неофициально стал расширяться фирмами-производителями
программ просмотра Интернета (и часто за счет форматирующих
элементов, например, CENTER в Netscape), что приводило к
несовместимости документов и нарушению золотого правила
стандартизации
6
На пути к XML (3)
•
В связи с опасностью появления большого
многообразия форматирующих элементов, и как
следствие потери взаимодействия в Web
Консорциум WWW предпринял:
1. Заимствовать из GML соглашение о присоединении к
документу правил форматирования через таблицы стилей
(CSS)
2. Был изобретен простой механизм добавления абстракций к
HTML, но не был предложен механизм для ограничения
области их использования (это все равно реализовывало
два из трех принципов GML)
3. Было решено разработать подмножество языка SGML,
который соединял бы основные достоинства SGML и был
бы прост в использовании, чтобы удовлетворить
сложившейся в Web этике. Так появился eXtensible Markup
Language (XML)
•
•
XLink, XPointer
XSL (XSLT(XPath) + XSL-FO)
7
Простой XML-документ (1)
• <?xml version="1.0" encoding="utf-8"?>
<DOCUMENT>
<GREETING>Hello From XML</GREETING>
<MESSAGE>
Добро пожаловать в мир XML.
</MESSAGE>
</DOCUMENT>
• Сохранить файл в указанной кодировке или заменить атрибут encoding
на значение "windows-1251" (можно использовать ascii, utf-16)
• Задание: посмотреть отображение этого файла в разных браузерах при
разных кодировках с содержимым, соответствующим заданной
кодировке и не соответствующей
• <?...?> инструкция по обработке (Processing Instruction – PI)
• <?xml-stylesheet type="text/css" href="xml01.css"?>
• Файл xml01.css:
GREETING {display: block;
font-size: 36pt;
color:#FF0000;
text-align:center}
MESSAGE {display: block; font-size: 18pt; color: #000000}
8
Простой XML-документ (2)
• Все XML-документы должны быть «хорошо сформированными»
(“well-formed”) (формально корректные, синтаксически
корректные)
• Задание: закомментировать закрывающий тег </MESSAGE>
• XML-документ может пройти проверку на соответствие
определению типа документа (DTD) или XML-схеме и быть
действительным (семантически корректным) или нет
• Определение типа документа DTD
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (GREETING, MESSAGE)>
<!ELEMENT GREETING (#PCDATA)>
<!ELEMENT MESSAGE (#PCDATA)>
]>
• Задание: добавить это определение типа документа после
инструкций по обработке в формально корректный документ и
отобразить его в окне браузера. Потом добавить элемент
<signature name="alex"/> и также отобразить элемент
9
Простой XML-документ (3)
•
•
Из XML-документа с помощью объектной модели XML-DOM можно извлечь
данные из любого элемента
<HTML>
<HEAD>
<TITLE>Поиск значений элементов в документов XML</TITLE>
<META http-equiv="content-type" CONTENT="text/html;
CHARSET=Windows-1251">
<XML ID="firstXML" SRC="xml01utf8.xml"></XML>
<SCRIPT LANGUAGE="JavaScript">
function getData(){
xmldoc= document.all("firstXML").XMLDocument;
nodeDoc = xmldoc.documentElement;
nodeGreeting = nodeDoc.firstChild;
outputMessage = nodeGreeting.nodeName+": " +
nodeGreeting.firstChild.nodeValue;
message.innerHTML+=outputMessage+"<br>"; }
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<H1>Поиск значений элементов в документов XML</H1>
<DIV ID="message"></DIV>
<P><INPUT TYPE="BUTTON" VALUE="Получить Greeting"
ONCLICK="getData()">
</CENTER>
</BODY>
</HTML>
10
Язык разметки MathML
•
•
www.w3.org/Math/
<HTML XMLNS:m="http://www.w3.org/1998/Math/MathML">
<HEAD>
<OBJECT ID=MathPlayer CLASSID="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">
</OBJECT>
<?IMPORT NAMESPACE="m" IMPLEMENTATION="#MathPlayer" ?>
</HEAD>
<BODY>
<p>Уравнение: <m:math> <m:msup><m:mi>x</m:mi><m:mn>2</m:mn></m:msup>
<m:mo>+</m:mo> <m:mn>9</m:mn> <m:mi>x</m:mi> <m:mo>+</m:mo> <m:mn>9</m:mn>
<m:mo>=</m:mo> <m:mn>0</m:mn> </m:math>
</p>
<p>Еще одно уравнение:
<m:math> <m:mrow> <m:mrow> <m:mn>3</m:mn> <m:mo>⁢</m:mo> <m:msup>
<m:mi>Z</m:mi> <m:mn>2</m:mn> </m:msup> <m:mo>-</m:mo> <m:mrow> <m:mn>6</m:mn>
<m:mo>⁢</m:mo> <m:mi>Z</m:mi> </m:mrow> <m:mo>+</m:mo>
<m:mn>12</m:mn> </m:mrow> <m:mo>=</m:mo> <m:mn>0</m:mn> </m:mrow>
</m:math>
</p>
</BODY></HTML>
11
HTML+TIME
• <HTML>
<HEAD>
<TITLE>Using HTML+TIME </TITLE>
<STYLE>
.time {behavior: url(#default#time);}
</STYLE>
</HEAD>
<BODY>
<DIV CLASS="time" t:REPEAT="5" t:DUR="10"
t:TIMELINE="par">
<DIV CLASS="time" t:BEGIN="0"
t:DUR="10">Hello</DIV>
<DIV CLASS="time" t:BEGIN="2"
t:DUR="10">there</DIV>
<DIV CLASS="time" t:BEGIN="4"
t:DUR="10">from</DIV>
<DIV CLASS="time" t:BEGIN="6"
t:DUR="10">HTML+TIME.</DIV>
</DIV>
</BODY>
</HTML>
12
XHTML
• <?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<title>
Web page number one!
</title>
</head>
<body>
<h1>Welcome to XHTML!</h1>
<center>
This is simple text that appears in this page.
<p>Here's a new paragraph!</p>
</center>
</body>
</html>
• Создать с расширением html и посмотреть отображение в разных
браузерах. Убрать закрывающий тег </center> и отобразить в разных
браузерах.
• Проделать тоже самое с файлом с расширением xml.
13
Scalable Vector Graphics
•
•
•
•
•
•
•
•
•
<h1>SVG in Action</h1>
<svg width="15cm" height="15cm">
<desc>Two groups, each of two rectangles</desc>
<rect x="100" y="100" width="100" height="100" fill="red"/>
<rect x="300" y="100" width="100" height="100" fill="red"/>
<circle cx="100" cy="300" r="100" fill="green"/>
<line x1="0" y1="0" x2="200" y2="200"
style="stroke:rgb(255,0,0);stroke-width:2" />
<rect x="300" y="300" width="100" height="100"
style="fill:blue"/>
</svg>
14
Download