Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Введение 2 page





Особенности

Общая структура Perl в общих чертах ведёт своё начало от языка Си. Perl — процедурный по своей природе, имеет переменные, выражения присваивания, блоки кода, отделяемые фигурными скобками, управляющие структуры и функции.

Perl также заимствует ряд свойств из языков программирования командных оболочек UNIX. Все переменные маркируются ведущими знаками, которые точно выражают тип данных переменной в этом. Важно, что эти знаки позволяют переменным быть интерполированным в строках. Perl обладает множеством встроенных функций, которые обеспечивают инструментарий, часто используемый для программирования оболочки, например сортировку или вызов системных служб.

Perl 5 добавил поддержку сложных типов данных, первоклассных функций (замыкание как значение) и объектную модель. В последнюю входят ссылки, пакеты, выполнение методов от класса, переменные с лексическим объявлением области видимости, а также директивы компилятору. Главнейшим усовершенствованием, представленным в Perl 5, стала возможность помещать код в «пакеты» (package) в качестве модулей для повторного использования.

Все версии Perl выполняют автоматическую типизацию данных и автоматический контроль над памятью. Интерпретатор знает тип и запросы памяти каждого объекта программы, он распределяет и освобождает память, производя подсчёт ссылок. Перевод одного типа данных в другой — например, числа в строку — происходит автоматически во время исполнения, невозможные для выполнения переводы типов данных приводят к фатальной ошибке.

Синтаксис языка Perl

Синтаксис Perl имеет много общего с синтаксисом языков Си и Bourne shell.

Первая строка исходного кода может начинаться с «#!/Путь/к/Perl [-ключи]» — что указывает системе путь к интерпретатору Perl для выполнения программы в UNIX системах и выполнения их на веб-сервере. Изначально обработка такой строки — это функция shell, но Perl при выполнении программы также проверяет эту строку и читает из неё ключи, игнорируя путь к интерпретатору.

Пример программы

Простейшая программа «Hello, world!» выглядит следующим образом:

 

print"Hello, world!\n";

Дозаписьвстроку.

$x=5;

$x.=0;

print$x;#50

 

2.3 Системы управления базами данных

 

MySQL — свободнаясистема управления базами данных (СУБД). Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации [5].

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Платформы [5]

MySQL портирована на большое количество платформ: FreeBSD, Linux, Mac OS X, NetBSD, OpenBSD, OS/2, Solaris, Windows Server 2003, WinCE, Windows Vista и Windows 7. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.

Поддерживаемые языки программирования [5]

MySQL имеет API для языков Delphi, C, C++, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и библиотеки для языков платформы.NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.

Отличительные особенности MySQL [5]

- Многопоточность. Поддержка нескольких одновременных запросов.

- Оптимизация связей с присоединением многих данных за один проход.

- Записи фиксированной и переменной длины.

- ODBC драйвер в комплекте с исходником

- Гибкая система привилегий и паролей.

- До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

- Поддержка ключевых полей и специальных полей в операторе CREATE.

- Поддержка чисел длинной от 1 до 4 байт (int, float, double, fixed), строк переменной длины и меток времени.

- Интерфейс с языками C и perl.

- Основанная на потоках, быстрая система памяти.

- Утилита проверки и ремонта таблицы (isamchk).

- Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.


- Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.

- Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей.

- Легкость управления таблицей, включая добавление и удаление ключей и полей.

Начиная с версии MySQL 5.5, СУБД содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:

- Использование по умолчанию движка InnoDB.

- Поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на дополнениях к InnoDB от компании Google.

- Улучшение функций по партицированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в * разных файловых системах (partitioning).

- Новый механизм оптимизации вложенных запросов и JOIN операций.

- Переработана система внутренних блокировок.

- Интегрированы дополнения Google с оптимизацией работы InnoDB на CPU с большим количеством ядер.

Максимальные размеры хранимых данных [5]

Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы. Например в NTFS этот размер теоретически может быть до 32 экзабайт. В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство. Размер последнего может достигать 64 терабайт.

Firebird (FirebirdSQL) — компактная, кроссплатформенная, свободнаясистема управления базами данных, работающая на Linux, Microsoft Windows и разнообразных Unix платформах [5].

Это коммерчески независимый проект C и C++ программистов, технических советников и разработчиков мультиплатформенных систем управления базами данных, основанный на исходном коде, выпущенном корпорацией Borland 25 июля 2000 года в виде свободной версии Interbase 6.0.

Firebird является сервером баз данных. Один сервер Firebird может обрабатывать несколько сотен независимых баз данных, каждую с множеством пользовательских соединений. Он является полностью свободным от лицензионных отчислений даже для коммерческого использования.

Основные характеристики [5]

1. Версионная архитектура: Основная особенность Firebird — версионная архитектура, позволяющая серверу обрабатывать различные версии одной и той же записи в любое время таким образом, что каждая транзакция видит свою версию данных, не мешая соседним («читающие транзакции не блокируют пишущие, а пишущие не блокируют читающих»).

2. Хранимые процедуры: Используя язык PSQL (процедурный SQL) Firebird, возможно создавать сложные хранимые процедуры для обработки данных полностью на стороне сервера. Для генерации отчётов особенно удобны хранимые процедуры с возможностью выборки, возвращающие данные в виде набора записей. Такие процедуры можно использовать в запросах точно так же как и обычные таблицы.

3. События: Хранимые процедуры и триггеры могут генерировать события, на которые может подписаться клиент. После успешного завершения транзакции (COMMIT) он будет извещён о произошедших событиях и их количестве.

4. Генераторы: Идея генераторов (последовательностей) делает возможной простую реализацию автоинкрементных полей, и не только их. Генераторы являются 64‐битными хранимыми в базе данных счётчиками, работающими независимо от транзакций. Они могут быть использованы для различных целей, таких как генерация первичных ключей, управление длительными запросами в соседних транзакциях.


5. Базы данных только для чтения: позволяют распространять базы данных, к примеру, на CD-ROM. Особенно упрощает распространение данных их использование в комбинации с встраиваемой версией сервера Firebird (Firebird Embedded).

6. Полный контроль за транзакциями: Одно клиентское приложение может выполнять множество одновременных транзакций. В разных транзакциях могут быть использованы разные уровни изоляции. Протокол двухфазного подтверждения транзакций обеспечивает гарантированную устойчивость при работе с несколькими базами данных. Так же доступны оптимистическое блокирование данных и точки сохранения транзакций.

7. Резервное копирование на лету: Для резервного копирования нет надобности останавливать сервер. Процесс резервного копирования сохраняет состояние базы данных на момент своего старта, не мешая при этом работе с базой. Кроме того, существует возможность производить инкрементальное резервное копирование БД.

8. Триггеры: Для каждой таблицы возможно назначение нескольких триггеров, срабатывающих до или после вставки, обновления или удаления записей. Для триггеров используется язык PSQL, позволяя вносить начальные значения, проверять целостность данных, вызывать исключения, и т.д. В Firebird 1.5 появились «универсальные» триггеры, позволяющие в одном триггере обрабатывать вставки, обновления и удаления записей таблицы.

9. Внешние функции: библиотеки с UDF (User Defined Function) могут быть написаны на любом языке и легко подключены к серверу в виде DLL/SO, позволяя расширять возможности сервера «изнутри».

10. Декларативное описание ссылочной целостности: Обеспечивает непротиворечивость и целостность многоуровневых отношений «master-detail» между таблицами.

11. Наборы символов: Firebird поддерживает множество международных наборов символов (включая Unicode) с множеством вариантов сортировки

Преимущества [5]

1. Многоверсионная архитектура. Обеспечивает параллельную обработку оперативных и аналитических запросов

2. Компактность. Объем дистрибутива на диске около 5Mb

3. Высокая эффективность.

4. Мощная языковая поддержку для хранимых процедур и триггеров.

Недостатки [5]

1. Отсутствие кеша результатов запросов

2. Отсутствие полнотекстовых индексов.

Соответствие стандарту SQL [5]

Firebird полностью поддерживает SQL 92 Entry Level 1 и реализует большую часть стандарта SQL-99 c некоторыми очень полезными дополнениями. Это включает выражения DML/DDL, синтаксис объединений FULL/LEFT/RIGHT [OUTER] JOIN, выражения UNION, DISTINCT, подзапросы (IN, EXISTS), встроенные функции (AVG, SUM, MIN, MAX, COALESCE, CASE,..), ограничения целостности (PRIMARY KEY, UNIQUE, FOREIGN KEY), и все общие типы данных SQL.


Firebird также реализует ограничения проверки (check constraints) на уровне доменов и полей, отображения, исключения, роли и управление правами доступа.

Требования к аппаратному обеспечению [5]

Firebird работает на 32- и 64-разрядных версиях Windows, Linux, также на MacOS X, HP-UX, FreeBSD и многих других. Переход от одной ОС к другой весьма прост — достаточно сделать резервную копию базы в переносимом формате в одной системе и восстановить на другой. Может использоваться даже не очень мощное оборудование, особенно под Linux.

На производительность СУБД влияют: количество памяти, скорость работы дисковой подсистемы. Рекомендации для выбора аппаратного обеспечения зависят от требования к системе, прогнозируемого размера базы данных, количества пользователей. Допустимо начинать с минимальной конфигурации, расширяя её по мере надобности.

Средства доступа к серверу [5]

Firebird поддерживает множество способов доступа, включая: собственные наборы компонент для C/C++, Delphi, классы для ADO, ODBC, JDBC (Jaybird), драйверы для Python, PHP, драйвер OLE DB, dbExpress, провайдер данных.NET и прямой доступ с использованием клиентской библиотеки сервера (fbclient.dll или GDS32.dll)

Физические ограничения [5]

Firebird поддерживает большие базы данных. Базы данных могут быть расположены в нескольких файлах, предельный размер которых зависит от операционной системы. Теоретический предел в настоящее время составляет 64TB для одного файла базы данных, таким образом, главные ограничения накладываются файловой системой и местом на жёстком диске.

Практически, база данных объемом 1 ТБ работает стабильно. Максимальная длина одной записи (суммарно все поля за исключением полей с типом BLOB) равна 64 КБ.

PostgreSQL -свободнаяобъектно-реляционнаясистема управления базами данных. Существует в реализациях для следующих платформ: Linux, Solaris/OpenSolaris, Win32, Win x86-64, Mac OS X, FreeBSD, QNX 4.25, QNX 6

Поддержка стандартов, возможности, особенности [5]

PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2003 (ISO/IEC 9075).

Основные возможности [5]

1. Функции. Являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов, выходит за рамки собственно SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием одного из следующих языков:

-Встроенный процедурный язык PL/pgSQL, во многом аналогичный языку PL/SQL, используемому в СУБД Oracle;

-Скриптовые языки — PL/Lua, PL/LOLCODE, PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh, PL/Tcl и PL/Scheme;

-Классические языки — C, C++, Java (через модуль PL/Java);

-Статистический язык R (через модуль PL/R).

PostgreSQL допускает использование функций, возвращающих набор записей, который далее можно использовать так же, как и результат выполнения обычного запроса.

Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя.

Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть различие.

2. Триггеры. Определяются как функции, инициируемые DML—операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствия определённым условиям. При написании функций для триггеров могут использоваться различные языки программирования (см. выше). Триггеры ассоциируются с таблицами. Множественные триггеры выполняются в алфавитном порядке.

3. Правила и представления. Механизм правил (англ. rules) представляет собой механизм создания пользовательских обработчиков не только DML-операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL-операции к таблице. Хорошим примером является реализация механизма представлений (англ. views): при создании представления создается правило, которое определяет, что вместо выполнения операции выборки к представлению система должна выполнять операцию выборки к базовой таблице/таблицам с учетом условий выборки, лежащих в основе определения представления. Для создания представлений, поддерживающих операции обновления, правила для операций вставки, изменения и удаления строк должны быть определены пользователем.

4. Индексы. В PostgreSQL имеется поддержка индексов следующих типов: B-дерево, хэш, R-дерево, GiST, GIN. При необходимости можно создавать новые типы индексов, хотя это далеко не тривиальный процесс. Индексы в PostgreSQL обладают следующими свойствами:

-возможен просмотр индекса не только в прямом, но и в обратном порядке — создание отдельного индекса для работы конструкции ORDER BY... DESC не нужно;

-возможно создание индекса над несколькими столбцами таблицы, в том числе над столбцами различных типов данных;

-индексы могут быть функциональными, то есть строиться не на базе набора значений некоего столбца/столбцов, а на базе набора значений функции от набора значений;

-индексы могут быть частичными, то есть строиться только по части таблицы (по некоторой её проекции); в некоторых случаях это помогает создавать намного более компактные индексы или достигать улучшения производительности за счёт использования разных типов индексов для разных (например, с точки зрения частоты обновления) частей таблицы;

-планировщик запросов может использовать несколько индексов одновременно для выполнения сложных запросов.

5. Многоверсионность (MVCC). PostgreSQL поддерживает одновременную модификацию БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID, и практически отпадает нужда в блокировках чтения.

6. Типы данных. PostgreSQL поддерживает большой набор встроенных типов данных:

-Численные типы

-Целые

-С фиксированной точкой

-С плавающей точкой

-Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с фиксированной точкой с двумя знаками после запятой)

-Символьные типы произвольной длины

-Двоичные типы (включая BLOB)

-Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая последние изменения в часовых поясах)

-Булев тип

-Перечисление

-Геометрические примитивы

-Сетевые типы

-IP и IPv6—адреса

-CIDR—формат

-МАС—адрес

-UUID—идентификатор

-XML—данные

-Массивы

-OID—типы

-Псевдотипы

7. Пользовательские объекты. PostgreSQL может быть расширен пользователем для собственных нужд практически в любом аспекте. Есть возможность добавлять собственные:

8. Преобразования типов

-Типы данных

-Домены (пользовательские типы с изначально наложенными ограничениями)

-Функции (включая агрегатные)

-Индексы

-Операторы (включая переопределение уже существующих)

-Процедурные языки

9. Наследование. Таблицы могут наследовать характеристики и наборы полей от других таблиц (родительских). При этом данные, добавленные в порождённую таблицу, автоматически будут участвовать (если это не указано отдельно) в запросах к родительской таблице. Данный функционал в текущее время не является полностью завершённым. Однако он достаточен для практического использования.

Надёжность [5]

Согласно результатам автоматизированного исследования различного ПО на предмет ошибок, в исходном коде PostgreSQL было найдено 20 проблемных мест на 775 000 строк исходного кода (в среднем, одна ошибка на 39 000 строк кода). Для сравнения: MySQL — 97 проблем, одна ошибка на 4 000 строк кода; FreeBSD (целиком) — 306 проблем, одна ошибка на 4 000 строк кода; Linux (только ядро) — 950 проблем, одна ошибка на 10 000 строк кода.

Для разработки системы поддержки абитуриентов ВУЗов в выборе перспективной профессии в качестве серверного языка программирования был выбран PHP. Основными критериями выбора стали:

1. Поддержка данного языка программирования подавляющим большиством хост-провайдеров.

2. Наличие большого количества интегрированных сред разработки, поддерживающих этот языке программирования.

3. Наличие встроенных механизмов работы с сессиями.

4. Поддержка большого количества СУБД.

В качестве клиентского языка программирования используется язык JavaScript. Преимуществом использования данного языка программирования является то, что он поддерживается всеми без исключения браузерами и не требует для выполнения дополнительного программного обеспечения в отличие от языка Java.

Из рассмотренных выше СУБД, лучше всего для разрабатываемой системы подходит СУБД MySQL. Это высокопроизводительная и легковесная СУБД. Она широко распостранена и включается в состав большинства веб-серверов.

 

2.4 Средства построения векторых изображений

 

SVG (от англ. Scalable Vector Graphics — масштабируемая векторная графика) —язык разметки масштабируемой векторной графики, созданный Консорциумом Всемирной паутины (W3C)и входящий в подмножество расширяемого языка разметки XML, предназначен для описания двумерной векторной и смешанной векторно / растровой графики в формате XML. Поддерживает как неподвижную, так анимированную и интерактивную графику — или, в иных терминах, декларативную и скриптовую. Не поддерживает описание трёхмерных объектов. Это открытый стандарт, является рекомендацией консорциума W3C, — организации, разработавшей такие стандарты, как HTML и XHTML. Разрабатывается с 1999 года, в 2001 году вышла 1.1 версия, которая остается актуальной до сегодняшнего дня, в активной разработке версия 1.2.

Растровое изображение, сгенерированное из примера SVG, демонстрирует прозрачность, градиентную заливку, разнообразные контуры и текст. Для просмотра оригинала потребуется браузер со встроенной поддержкой SVG, или оборудованный специальным плагином.

Возможности языка

Позволяет задать любую фигуру компактной строкой, описывающей путь от начальной точки до конечной через любые промежуточные координаты. Строка с данными задаётся атрибутом dтегаpathи содержит команды, закодированные набором букв и чисел. Буква определяет тип команды, числа — её параметры (чаще всего — координаты). Команды позволяют описывать фигуры, состоящие из отрезков прямых (L,H,V),кривых Безье(C,S,Q,T) и дуг (A). Пример, описывающий звезду из 5 линий, содержит строку данных с командами M (англ.moveto — переместить) и L (англ.lineto — нарисовать линию), содержащими в качестве аргументов координаты точек по X и Y.

 

<pathfill="none"stroke="black"d="M 227 239 L 328 90 L 346 250 L 201

124 L 410 150 L 228 238"/>

 

Описание основных геометрических фигур (многоугольники, прямоугольники, окружности и т. п.).

Широкий спектр визуальных свойств, которые можно применить к фигурам и путям: окраска, прозрачность, скругление углов и т. д.

Интерактивность. На каждый отдельный элемент и на целое изображение можно повесить обработчик событий (клик, перемещение, нажатие клавиши и т.д), таким образом, пользователь может управлять рисунком (например — перемещать мышкой некоторые элементы

Анимация и сценарии. С помощью ECMA Script или Java Script можно описывать даже самые сложные сценарии, связанные с математическими вычислениями координат и пропорций фигур. Вместе с интерактивностью и SMIL-анимацией это дает очень широкие возможности для разработчиков веб-графики.

Достоинства формата

 

 

Растровое изображение содержит в себе информацию о точках, а векторное — о фигурах. Здесь показано ключевое преимущество «вектора» над «растром».

Текстовый формат — файлы SVG можно читать и редактировать при помощи обычных текстовых редакторов. При просмотре документов, содержащих SVG графику, имеется доступ к просмотру кода просматриваемого файла и возможность сохранения всего документа. Кроме того, SVG файлы обычно получаются меньше по размеру, чем сравнимые по качеству изображения в форматах JPEG или GIF, а также хорошо поддаются сжатию.

Масштабируемость — SVG является векторным форматом. Существует возможность увеличить любую часть изображения SVG без потери качества. Дополнительно, к элементам SVG документа возможно применять фильтры — специальные модификаторы для создания эффектов, подобных применяемым при обработке растровых изображений (размытие, выдавливание, сложные системы трансформации и др.) В тексте SVG-кода фильтры описываются тегами, визуализацию которых обеспечивает средство просмотра, что не влияет на размер исходного файла, обеспечивая при этом необходимую иллюстративную выразительность.

Широко доступно использование растровой графики в SVG документах. Имеется возможность вставлять элементы с изображениями в форматах PNG, GIF или JPG.

Текст в графике SVG является текстом, а не изображением, поэтому его можно выделять и копировать, он индексируется поисковыми машинами, не нужно создавать дополнительные метафайлы для поисковых серверов.

Анимация реализована в SVG с помощью языка SMIL (Synchronized Multimedia Integration Language), разработанного также консорциумом W3C. Поддерживаются скриптовые языки на основе спецификации ECMA Script. SVG-элементами можно управлять с помощью Java Script. Применение скриптов и анимации в SVG позволяет создавать динамичную и интерактивную графику. В SVG обеспечивается событийная модель, отслеживаются события (загрузка страницы, изменение ее параметров, события мыши, клавиатуры и др.) Анимация может запускаться по определенному событию (например«onmouseover» или «onclick»), что придаёт графике интерактивность. У каждого элемента есть свои собственные события, к которым можно привязывать отдельные скрипты.

SVG — открытый стандарт. В отличие от некоторых других форматов, SVG не является чьей-либо собственностью.

SVG документы легко интегрируются с HTML и XHTML документами. Внешний SVG подключаются через тег<object>, значение атрибута data — имя файла с расширением «.svg», содержащего разметку SVG, type — MIME-тип, то есть image/svg+xml. Атрибуты width и height определяют размеры области SVG по горизонтали и по вертикали. Элементы SVG совместимы с HTML и DHTML.

Совместимость с CSS (англ. Cascading Style Sheets). Отображением (форматированием и декорированием) SVG элементов можно управлять с помощью таблицы стилей CSS 2.0 и её расширений, либо напрямую с помощью атрибутов SVG элементов.

SVG предоставляет все преимущества XML:

Возможность работы в различных средах.

Интернационализация (поддержка Юникода).

Широкая доступность для различных приложений.

Лёгкая модификация через стандартные API — например, DOM. SVG поддерживает стандартизированную W3C объектную модель документа DOM, обеспечивая доступ к любому элементу, что даёт широкие возможности по динамическому изменению элементов, их атрибутов и событий.

Лёгкое преобразование таблицами стилей XSLT. Как любой основанный на XML формат, SVG дает возможность использовать для его обработки таблицы трансформации (XSLT). Преобразуя XML-данные в SVG с помощью простого XSL, можно легко получить графическое представление любых данных, например, визуализировать химические молекулы, описанных на языке CML (Chemical Markup Language).

Недостатки формата

SVG наследует все недостатки XML, такие как большой размер файла (впрочем, последний компенсируется существованием сжатого формата SVGZ).

Сложность использования в крупных картографических приложениях из-за того, что для правильного отображения маленькой части изображения документ необходимо прочитать целиком.

Чем больше в изображении мелких деталей, тем быстрее растёт размер SVG-данных. Предельный случай — когда изображение представляет собой белый шум. В этом случае SVG не только не даёт никаких преимуществ, но и даже обладает чрезмерно избыточным по отношению к растровому формату размером. На практике, SVG становится невыгоден уже задолго до того, как изображение дойдёт до стадии белого шума.

Структура документа SVG

Первая строка — стандартный XML-заголовок, объявление (англ. XML declaration), указывающее версию XML (version) (обычно «1.0») и кодировку символов (encoding):

 

<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>

 

Во второй и третьей строках должен располагаться заголовок DOCTYPE, определяющий тип документа (англ.Document Type Definitions)DTD:

 

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"

"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

 

К сожалению, в некоторых случаях при применении Mozilla Firefoxсо встроенным просмотрщиком SVG содержание объявления DOCTYPE может быть источником ошибок. Имеются рекомендации не использовать декларацию DOCTYPE в SVG версий 1.0. Вместо этого рекомендовано включать атрибут base Profile в корневой элемент<svg>со значением «full».

Если по каким-то причинам декларация DOCTYPE в документе необходима, рекомендовано использовать пустую декларацию, как в примере.

 

<!DOCTYPE svg [ <!-- ваши данные --> ]>

 

В четвёртой строке размещается корневой элемент документа с указанием пространства имен SVG.

 

<svgversion="1.1"

baseProfile="full"

xmlns="http://www.w3.org/2000/svg"

xmlns:xlink="http://www.w3.org/1999/xlink"

xmlns:ev="http://www.w3.org/2001/xml-events"

width="100%"height="100%">

 

Далее идёт остальной текст документа вложенный в корневой элемент, где собственно располагаются элементы, описывающие содержание кодируемой сцены.

Завершается документ всегда закрытием корневого тега</svg>.

Пример

Простой статичный SVG-документ с контуром квадрата размером 400пикселейи тремя полупрозрачными кругами радиусом 104 пикселей, по центру квадрата, каждый круг смещается от центра квадрата примерно на пол радиуса.

 

<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>

<svg version = "1.1"

baseProfile="full"







Date: 2016-02-19; view: 868; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.05 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию