В общем случае XML- документы должны удовлетворять следующим требованиям:
· В заголовке документа помещается объявление XML, в котором указывается язык разметки документа, номер его версии и дополнительная информация
· Каждый открывающий тэг, определяющий некоторую область данных в документе обязательно должен иметь своего закрывающего "напарника", т.е., в отличие от HTML, нельзя опускать закрывающие тэги
· В XML учитывается регистр символов
· Все значения атрибутов, используемых в определении тэгов, должны быть заключены в кавычки
· Вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов
· Вся информация, располагающаяся между начальным и конечными тэгами, рассматривается в XML как данные и поэтому учитываются все символы форматирования (т.е. пробелы, переводы строк, табуляции не игнорируются, как в HTML)
Если XML- документ не нарушает приведенные правила, то он называется формально-правильным и все анализаторы, предназначенные для разбора XML- документов, смогут работать с ним корректно.
Однако кроме проверки на формальное соответствие грамматике языка, в документе могут присутствовать средства контроля над содержанием документа, за соблюдением правил, определяющих необходимые соотношений между элементами и формирующих структуру документа. Например, следующий текст, являясь вполне правильным XML- документом, будет абсолютно бессмысленным:
<country><title>Russia</title> <city><title>Novosibirsk</country></title></city>Для того, чтобы обеспечить проверку корректности XML- документов, необходимо использовать анализаторы, производящие такую проверку и называемые верифицирующими.
На сегодняшний день существует два способа контроля правильности XML- документа: DTD - определения(Document Type Definition) и схемы данных(Semantic Schema). Более подробно об использовании DTD и схемах мы поговорим в следующих разделах. В отличии от SGML, определение DTD- правил в XML не является необходимостью, и это обстоятельство позволяет нам создавать любые XML- документы, не ломая пока голову над весьма непростым синтаксисом DTD.
Конструкции языка
Содержимое XML- документа представляет собой набор элементов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных. Рассмотрим каждый из них подробней.
Элементы данных
Элемент - это структурная единица XML- документа. Заключая слово rose в в тэги <flower> </flower>, мы определяем непустой элемент, называемый <flower>, содержимым которого является rose. В общем случае в качестве содержимого элементов могут выступать как просто какой-то текст, так и другие, вложенные, элементы документа, секции CDATA, инструкции по обработке, комментарии, - т.е. практически любые части XML- документа.
Любой непустой элемент должен состоять из начального, конечного тэгов и данных, между ними заключенных. Например, следующие фрагменты будут являться элементами:
<flower>rose</flower><city>Novosibirsk</city>,а эти - нет:
<rose><flower>roseНабором всех элементов, содержащихся в документе, задается его структура и определяются все иерархическое соотношения. Плоская модель данных превращается с использованием элементов в сложную иерархическую систему со множеством возможных связей между элементами. Например, в следующем примере мы описываем месторасположение Новосибирских университетов (указываем, что Новосибирский Университет расположен в городе Новосибирске, который, в свою очередь, находится в России), используя для этого вложенность элементов XML:
<country id="Russia"> <cities-list><city><title>Новосибирск</title><state>Siberia</state><universities-list><university id="2"><title>Новосибирский Государственный Технический Университет</title><noprivate/><address URL="www.nstu.ru"/><description>очень хороший институт</description> </university> <university id="2"><title>Новосибирский Государственный Университет</title><noprivate/><address URL="www.nsu.ru"/><description>тоже не плохой</description> </university> </universities-list></city></cities-list></country>Производя в последствии поиск в этом документе, программа клиента будет опираться на информацию, заложенную в его структуру - используя элементы документа. Т.е. если, например, требуется найти нужный университет в нужном городе, используя приведенный фрагмент документа, то необходимо будет просмотреть содержимое конкретного элемента <university>, находящегося внутри конкретного элемента <city>. Поиск при этом, естественно, будет гораздо более эффективен, чем нахождение нужной последовательности по всему документу.
В XML документе, как правило, определяется хотя бы один элемент, называемый корневым и с него программы-анализаторы начинают просмотр документа. В приведенном примере этим элементом является <country>
В некоторых случаях тэги могут изменять и уточнять семантику тех или иных фрагментов документа, по разному определяя одну и ту же информацию и тем самым предоставляя приложению-анализатору этого документа сведения о контексте использования описываемых данных. Например, прочитав фрагмент <city> Holliwood </city> мы можем догадаться, что речь в этой части документа идет о городе, а вот во фрагменте <restaurant> Holliwood </restaurant> - о забегаловке.
В случае, если элемент не имеет содержимого, т.е. нет данных, которые он должен определять, он называется пустым. Примером пустых элементов в HTML могут служить такие тэги HTML, как <br>, <hr>, <img>;. Необходимо только помнить, что начальный и конечные тэги пустого элемента как бы объединяется в один, и надо обязательно ставить косую черту перед закрывающей угловой скобкой (например, <empty/>;)
Комментарии
Комментариями является любая область данных, заключенная между последовательностями символов <!-- и --> Комментарии пропускаются анализатором и поэтому при разборе структуры документа в качестве значащей информации не рассматриваются.
Атрибуты
Если при определении элементов необходимо задать какие-либо параметры, уточняющие его характеристики, то имеется возможность использовать атрибуты эдлемента. Атрибут - это пара "название" = "значение", которую надо задавать при определении элемента в начальном тэге. Пример:
или
<author id=0>Ivan Petrov</author>Примером использования атрибутов в HTML является описание элемента <font>:
<font color=¦white¦ name=¦Arial¦>Black</font>Cпециальные символы.
Для того, чтобы включить в документ символ, используемый для определения каких-либо конструкций языка (например, символ угловой скобки) и не вызвать при этом ошибок в процессе разбора такого документа, нужно использовать его специальный символьный либо числовой идентификатор. Например, <, > " или $(десятичная форма записи),  (шестнадцатеричная) и т.д. Строковые обозначения спецсиволов могут определяться в XML документе при помощи компонентов (entity), о чем мы еще поговорим немного позже.
Директивы анализатора.
Инструкции, предназначенные для анализаторов языка, описываются в XML документе при помощи специальных тэгов - <? и ?>;. Программа клиента использует эти инструкции для управления процессом разбора документа. Наиболее часто инструкции используются при определении типа документа (например, <? Xml version=¦1.0¦?>) или создании пространства имен[11].
CDATA.
Чтобы задать область документа, которую при разборе анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы, но, в отличии от комментариев, иметь возможность использовать их в приложении, необходимо использовать тэги <![CDATA] и ]]>. Внутри этого блока можно помещать любую информацию, которая может понадобится программе- клиенту для выполнения каких-либо действий (в область CDATA, можно помещать, например, инструкции JavaScript). Естественно, надо следить за тем, чтобы в области, ограниченной этими тэгами не было последовательности символов ]].
Литература
- Дэвид Хантер, Джефф Рафтер и др. XML. Базовый курс = Beginning XML. — М.: Вильямс, 2009. — 1344 с. — ISBN 978-5-8459-1533-7
- Сергеев А. П. HTML и XML. Профессиональная работа. — М.: Диалектика, 2004. — 880 с. — ISBN 5-8459-0676-8
- Роберт Тейбор. Реализация XML Web-служб на платформе Microsoft.NET = Microsoft.NET XML Web Services. — М.: Вильямс, 2002. — 464 с. — ISBN 0-672-32088-6
Ссылки
XML
Русский перевод спецификации XML 1.0
Официальная спецификация стандарта XML 1.1
Adobe Flash и Adobe Flex
Разработчики страниц пытаются придать страницам привлекательный вид, используя графику и анимацию. Замечательным инструментом создания графики и анимации является программное средство Adobe Flash. Flash обладает такими возможностями как:
- Применение векторной графики, представляющей собой ряд формул, описывающих изображения. Это позволяет уменьшать размеры графических файлов.
- Свойство потоковой передачи графики позволяет отображать сайт в Web-браузере до полной его загрузки.
- Интерактивность во Flash позволяет вводить кнопки, меню или фрагменты анимации, с помощью которых пользователь перемещается по сайту. Задавая события с помощью языка создания сценариев ActionScript можно создавать интерактивные анимации.
Adobe Flash - мультимедийная платформа компании Adobe для создания веб-приложений и мультимедийных презентаций. Широко используется для создания рекламных баннеров, анимации и игр. Flash часто предпочитают другим средствам разработки приложений для web из-за скорости разработки, простоты изучения языка программирования (ActionScript) и возможности легко создавать сложные и красивые эффекты. Adobe Flash позволяет работать с векторной, растровой и ограниченно с трёхмерной графикой, а также поддерживает двунаправленную потоковую трансляцию аудио и видео.
Платформа Adobe Flash включает в себя ряд средств разработки, прежде всего Adobe Flash Professional и Adobe Flash Builder, а также программу для воспроизведения flash-контента — Adobe Flash Player.
Одним из последних новшеств Flash является возможность упаковать приложение в мобильные форматы для iPhone и Android. Для КПК и других мобильных устройств выпущена специальная «облегчённая» версия платформы Flash Lite, функциональность которой ограничена в расчёте на возможности мобильных устройств и их операционных систем.
Стандартным расширением для скомпилированных flash-файлов (анимации, игр и интерактивных приложений) является.SWF. Расширение FLA соответствует формату рабочих файлов в среде разработки.
Вставка флэш в страницу
При вставке.swf ролика в страницу необходимо помнить о нескольких деталях: - Flash Player по разному вставляется в IE, и в другие браузеры
- Необходимо всегда проверять наличие необходимой версии Flash Player у пользователя
- Важно не ошибиться в параметрах сценария
Пример кода для вставки в страницу.swf ролика:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="300" height="150">
<param name=movie value="адрес флэшки">
<param name=quality value=high>
<embed src="адрес флэшки" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="300" height="150"></embed></object>
Для вставки.swf роликов в страницу рекомендуется пользоваться проектом swfobject (http://code.google.com/p/swfobject/). Swfobject позволяет избавиться от типичных ошибок при вставке.swf файлов в страницу и значительно упрощает процесс интеграции flash ролика в страницу.
Язык ActionScript
ActionScript является языком программирования, используемым в средах выполнения Adobe Flash Player и Adobe AIR. Он обеспечивает интерактивность, обработку данных и многие другие возможности в содержимом Adobe Flash, Flex и AIR, а также в приложениях. ActionScript выполняется виртуальной машиной AVM, которая является частью проигрывателя Flash Player и пакета AIR. Код ActionScript обычно преобразуется компилятором в формат байт-кода. (Байт-код — это тип языка программирования, написанный и распознаваемый компьютером.) Байт-код встроен в SWF-файлы, которые исполняет проигрыватель Flash Player и пакет AIR.
Среди примеров компиляторов — компилятор, встроенный в Adobe Flash Professional, компилятор, встроенный в Adobe Flash Builder, а также компилятор, доступный в компоненте Adobe Flex SDK.
ActionScript 3.0 достаточно просто для изучения людям знакомым с ООП.
Пример hello world на языке ActionScript 3.0
package {
import flash.display.Sprite;
import flash.text.TextField;
public class HelloWorld extends Sprite {
public function HelloWorld() {
var txtHello:TextField = new TextField();
txtHello.text = "Hello, world";
addChild(txtHello);
}
}
}
Более сложный пример рисования:
package
{
import flash.display.Sprite;
import flash.display.Shape;
public class FirstDrawing extends Sprite
{
public function FirstDrawing()
{
// создание объекта класса Shape
var circle:Shape = new Shape();
// инициализация заливки
circle.graphics.beginFill(0xff9933, 1);
// рисование круга
circle.graphics.drawCircle(0, 0, 40);
// изменение позиции
circle.x = 140;
circle.y = 40;
// добавление круга к дисплей листу
addChild(circle);
// создание объекта класса Shape
var rectangle:Shape = new Shape();
// инициализация заливки
rectangle.graphics.beginFill(0xaaFFaa, 1);
// рисование прямоугольника
rectangle.graphics.drawRect(0, 0, 40, 60);
// изменение позиции
rectangle.x = 0;
rectangle.y = 0;
// добавление прямоугольника к дисплей листу
addChild(rectangle);
// создание объекта класса Shape
var line:Shape = new Shape();
// инициализация стиля линии
line.graphics.lineStyle(1, 0x3333ff);
// рисование линии
line.graphics.moveTo(140, 40);
line.graphics.lineTo(20, 30);
// добавление линии к дисплей листу
addChild(line);
}
}
}
Видео-аудио проигрыватели
Одним из самых частых способов использования технологии flash в интернете является проигрывание видео и аудио треков. В большинстве случаев для интеграции видео в веб страничку достаточно уже готовых интернет проигрывателей. Рассмотрим, например, один из популярных и свободно распространяемых проигрывателей: JW FLV Player (http://www.longtailvideo.com/players/jw-flv-player/)
Для интеграции JW FLV Player на сайт достаточно проследовать 4-м шагам:
1. Скачать архив с плеером с сайта проигрывателя
2. Загрузить файлы jwplayer.js и player.swf из архива на ваш сервер.
3. Подключите jwplayer.js на странице на которой вы собираетесь его использовать.
Например можно сделать так:
<script type="text/javascript" src="/jwplayer/jwplayer.js"></script>
4. Проинициализируйте плеер где-либо в коде вашей страницы. Сделать это можно следующим образом
<div id="container">Loading the player...</div>
<script type="text/javascript"> jwplayer("container").setup({
});
flashplayer: "/jwplayer/player.swf", file: "/uploads/video.mp4", height: 270, width: 480
</script>
Более детальные инструкции вы можете найти в документации по плееру.
Flex
Adobe Flex — технология для легкого и очень быстрого создания Rich Internet Applications, использующая описание интерфейса приложения с помощью диалекта XML — MXML. Flex приложение может компилироваться на сервере, а может — из IDE как во Flash, результатом является swf файл, исполняемый с помощью Flash Player.
Flex SDK - это большой набор классов, расширяющих возможности Flash. Flex-framework включает возможности локализации, стилизации приложения, разработки модульного приложения, встроенные валидаторы и форматоры текстовых полей — все те инструменты, которые нужны разработчикам приложений, работающих online.
Adobe предоставляет бесплатное средство разработки на Flex: Flash Buildr. Интегрированная среда разработки Adobe Flash Builder создана на свободно распространяемой платформе разработки Eclipse. Поскольку многие разработчики уже используют Eclipse при программировании на Java, Flash Builder предоставляет им знакомую среду для создания и Java-приложений, и полнофункциональных клиентов.
Flex, помимо скорости разработки, предоставляет полные мультимедийные возможности Flash платформы: включая потоковое мультимедиа, возможность получить доступ к веб-камере и микрофону пользователя, бинарные сокеты, обширные возможности сетевых коммуникаций (HTTP-запросы, веб-сервисы, встроенный формат сериализации AMF), оперирование координатами трехмерного пространства, возможности использования встроенных фильтров (таких как расфокусировка, падающая тень и др.), и написания собственных.
Если сильно обобщить, то Flex – это сложные приложения для веб и декстопов, в то время как Flash – это анимации, баннеры и простые игры.
Пример простого приложения на флекс. Код написан на mxml (расширение xml):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical"
creationComplete="initApp()">
<mx:Script>
<![CDATA[
public function initApp():void
{
// Prints our "Hello, world!" message into "mainTxt".
mainTxt.text = "Hello, world!";
}
]]>
</mx:Script>
<mx:Label id="title" fontSize="24" text='"Hello, world!" Example'/>
<mx:TextArea id="mainTxt" width="250"/>
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Declarations>
<!-- Задаем XML для описания списка сотрудников -->
<fx:XMLList id="employees">
<employee>
<name>Christina Coenraets</name>
<phone>555-219-2270</phone>
<email>ccoenraets@fictitious.com</email>
<active>true</active>
<image>images/arrow_icon_sm.png</image>
</employee>
<employee>
<name>Joanne Wall</name>
<phone>555-219-2012</phone>
<email>jwall@fictitious.com</email>
<active>true</active>
</employee>
<employee>
<name>Maurice Smith</name>
<phone>555-219-2012</phone>
<email>maurice@fictitious.com</email>
<active>false</active>
</employee>
<employee>
<name>Mary Jones</name>
<phone>555-219-2000</phone>
<email>mjones@fictitious.com</email>
<active>true</active>
</employee>
</fx:XMLList>
</fx:Declarations>
<!-- Задаем горизонтальное центрирования для нашего приложения -->
<s:layout>
<s:HorizontalLayout horizontalAlign="center" />
</s:layout>
<!-- Описываем контейнер для нашей таблицы -->
<s:Panel title="DataGrid Control"
color="0x000000"
borderAlpha="0.15"
width="600">
<!-- Задаем паддинги для контейнера -->
<s:layout>
<s:VerticalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"/>
</s:layout>
<!-- Создаем текстовую строку -->
<s:Label width="100%" color="0x323232"
text="Select a row in the DataGrid control."/>
<!-- Создаем Таблицу. Инициализируем ее данными из xml -->
<mx:DataGrid id="dg" color="0x323232" width="100%" rowCount="3" dataProvider="{employees}">
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="Name"/>
<mx:DataGridColumn dataField="phone" headerText="Phone"/>
<mx:DataGridColumn dataField="email" headerText="Email"/>
</mx:columns>
</mx:DataGrid>
<!-- Создаем форму для вывода информации из выделенной строки -->
<mx:Form color="0x323232" width="100%" height="100%" paddingTop="0" paddingBottom="0" >
<mx:FormItem label="Name" paddingTop="0" paddingBottom="0">
<s:Label text="{dg.selectedItem.name}"/>
</mx:FormItem>
<mx:FormItem label="Email" paddingTop="0" paddingBottom="0">
<s:Label text="{dg.selectedItem.email}"/>
</mx:FormItem>
<mx:FormItem label="Phone" paddingTop="0" paddingBottom="0">
<s:Label text="{dg.selectedItem.phone}"/>
</mx:FormItem>
</mx:Form>
</s:Panel>
</s:Application>