just photo

XML

Современные форматы документов

обновление: February 2007

Это не статья, это набор ссылок, вобщем-то исчерпывающий, но позже я добавлю сюда некоторые свои соображения, что-нибудь вроде: "Если Вы не сумасшедший, не связывайте себя использованием псевдо технологий от Microsoft, и в частности не завязывайтесь на OpenXML так как по большому счету данный формат совмем не Open и не совсем XML"

http://ivbeg.livejournal.com/51726.html http://ivbeg.livejournal.com/45201.html http://itst.dk/static/nyhed/English%20summary.pdf http://www.oio.dk/files/Research_OXML.ODF2.pdf http://en.wikipedia.org/wiki/OpenXML http://en.wikipedia.org/wiki/OpenDocument http://en.wikipedia.org/wiki/PDF Comparison_of_OpenDocument_and_Office_Open_XML_formats Comparison_of_OpenDocument_and_Office_Open_XML_licensing

"Исследование Ovistas. Документ отличается тем что сравнивает не технические тонкости форматов этих документов, а те критерии которые наиболее важны для государственных стандартов обмена документами. Такие как: 1. Открытость и прозрачность стандартизации. 2. Зрелость. 3. Лицензионные ограничения. 4. Поддержка существующим ПО и ещё множество других. Библиография "Исследование OpenXML, ODF & PDF" (на анг., проведено норвежской компанией Ovistas по заказу Датского правительства, февраль 2007)"

Цитирую Ивана Бегтина.

Далее про СЭД в России

http://www.cnews.ru/reviews/reviews/index.shtml?239490_short

http://www.cnews.ru/cgi-bin/oranews/get_news.cgi?tmpl=top_print&news_id=...

http://itblogs.ru/blogs/borkus/archive/2007/04/15/cnews.aspx

http://www.cnews.ru/cgi-bin/oranews/get_news.cgi?tmpl=top_print&news_id=...

 

 

Notes about XSLT in browser (2006)

Notes about XSLT in browser, originaly was posted on my.opera.com (в моём умершем не успев родиться блоге).

If you use one of the modern browser you could try to code
web application interface with XSLT.

Some code for you (without DocType)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" media-type="text/html" />
<xsl:template match="/">
<body mime-type="text/html"><!-- need for FireFox -->
...

So your XSLT page would works at

  • Internet Explorer 6.0 SP1
  • FireFox 1.5.0.1
  • Opera 9 Beta (build 8359)

Немного об XML

XML преобразования и проверка XML данных

XML

XML (Extensible Markup Language — расширяемый язык разметки) — рекомендованный Консорциумом WWW язык разметки общего назначения, предназначенный для создания специализированных языков разметки. Является упрощённым подмножеством языка SGML, может описывать множество разнообразных видов данных. Целью создания XML было стремление способствовать совместному использованию структурированных данных в различных системах обработки информации, особенно в системах связанных через Интернет. Языки основанные на XML (например, RDF, RSS, MathML, XHTML, SVG) сами по себе формально описаны, что позволяет программно изменять и проверять документы на этих языках не зная их семантики, т. е. смыслового значения элементов языка.

Обработка XML файлов

Для обработки XML данных широко используются такие API как SAX (Simple API for XML) и DOM (Document Object Model).

Преобразование (трансформация) является одной из самых важных и полезных техник работы с XML. Трансформация XML
означает преобразование структуры, разметки и, возможно, содержания в другую форму.

Существует семейство XSL (Extensible Stylesheet Language), с помощью которого преобразуются XML файлы для представления и печати, в него входят:

  • XSL-FO декларативный язык постраничной верстки. XSL-FO процессор преобразует XSL-FO документ в не-XML формат, например в PDF;

  • XQuery язык запросов для структурирования и трансформации XML данных;

  • XSLT декларативный язык преобразования XML документов;

  • XPath язык для выбора данных в XML файле, является частью XQuery и XSLT.

XSLT

В спецификации «Преобразования расширяемого языка стилей» (Extensible Stylesheet Language Transformations (XSLT) 1.0) [Рекомендация W3C] определяется язык, используемый для описания преобразований входного XML-документа в выходное дерево. Выходное дерево может, например, принять форму HTML-документа или другого XML-формата и, таким образом, XSLT может считаться языком, предназначенным для преобразования XML в форму представления традиционного браузера или для обработки XML-файлов с помощью скриптов.

Это преобразование представляет собой XML-документ, определенный в отдельном словаре, а для обращения к исходному документу и выполнения общих операций обработки используются выражения спецификации XPath. Специальные инструкции устанавливают правила обработки (XSLT является декларативным языком) и управляют процессом создания выходного дерева.

XSL-документ (XSL stylesheet) представляет собой разновидность XML-документа, который используется для представления правил, по которым будет происходить преобразование. Правила основаны на совпадении шаблонов, т.е., например,
"если встретился элемент A, то вставить указанный кусочек HTML-кода и продолжить поиск совпадений шаблонов дальше"
. Все очень похоже на функциональный или логический язык программирования: есть рекурсивная и процедурная семантика; например, кроме рекурсивных применений шаблонов существует возможность органзации циклов (
"для всех элементов A вставить такой HTML-код"
).

Инструменты преобразования

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

  • Это первый вариант визуализации данных - как только потребовалось просмотреть XML-документ, преобразовать его с помощью XSLT процессора в HTML и просмотреть браузером.

  • Второй вариант заключается в том, что сам браузер при открытии документа пытался бы выполнить соответствующее преобразование. Сейчас это более-менее полно поддерживает только MS Internet Explorer версии не ниже 5.5 (с установленным MSXML) и Mozilla (в том числе Mozilla Firefox).

Что необходимо для того, чтобы XML документ при открытии в браузере отображался в виде результата преобразования этого XML с помощью некоторой XSLT,
рассмотрим вариант Internet Explorer:

  • в заголовоке XML документа необходимо указать путь к той XSLT, по правилам которой мы хотим показать наш XML, для этого под заголовком XML (<?xml ... ?>) добавляем следующую строку:<?xml-stylesheet type="text/xsl" href="my_xsl.xslt"?>
    где в аттрибуте href определяется относительный или полный путь до шаблона XSLT;

  • в системе необходимо присутствие MSXML 4.0 (MSXML поддерживает XSLT 1.0 начиная с версии 3.0,
    данная библиотека входит входит в дистрибутив Windows XP)

  • В XSLT используется стандартное пространство имен (namespace): <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    т.е заголовок нашего XSL-документа должен выглядеть примерно следующим образом:<?xml version="1.0" encoding=""?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  • и наконец, XSLT документ должен соответствовать рекомендации XSLT 1.0.

XSLT процессоры

Для выполнения XSLT преобразований существуют как бесплатные, так и коммерчиские библиотеки написанные на С или Java, называемые XSLT-процессорами. Часто XSLT-процессор является лишь частью большой XML библиотеки, которая может включать в себя XML-парсер, XML-валидатор и т.д. Такие библиотеки могут быть использованы другими приложениями на различных языках C, C++, Java, Perl, PHP и т.д., которым необходима работа с XML.

Проверка XML файлов

"Правильность"
XML документа определяют следующие два компонента:

  • Синтаксическая корректность (well-formed): то есть соблюдение всех синтаксических правил XML;

  • Валидность: т.е. данные соотвествуют некоторому набору правил, определенных пользователем; правила определяют структуру и формат данных в XML.

Синтаксически корректный XML

XML документ - это текст, последовательность символов. По спецификации требуется поддержка юникод, кодировки UTF-8.

    Правильный XML-документ - это документ, который удовлетворяет синтаксическим правилам XML:
  • Он должен начинаться с XML-декларации

  • Он должен иметь один-единственный уникальный корневой элемент

  • Каждому начальному тэгу должен соответствовать конечный тэг

  • Тэги XML зависят от регистра

  • Все элементы должны быть закрыты

  • Все элементы должны бытьправильно вложены друг в друга

  • Все значения атрибутов должны быть заключены в кавычки

  • Вместо специальных символов должны применяться сущности XML

Даже если XML-документ не содержит синтаксических ошибок, он может содержать ошибки и эти ошибки могут привести к серьезным последствиям. Представьте себе ситуацию: вы сделали заказ на пять дюжин лазерных принтеров, а не на просто пять лазерных принтеров. При использовании XML-схем большая часть подобных ошибок может быть отслежена вашим валидационным программным обеспечением.

Валидный XML. Что такое XML-схема?

Схематичное представление XML схемы в редакторе Altova XMLspy

    XML-схема
  • Определяет элементы, которые могут появляеться в документе

  • Определяет аттрибуты, которые могут появляеться в документе

  • Определяет, какие элменты являются дочерними

  • Определяет последовательность, в которой появляются элементы

  • Определяет число дочерних элментов

  • Определяет пустой ли элемент или он может включать в себя текст

  • Определяет типы данных элментов и аттибутов

  • Определяет значения аттрибутов по умолчанию

XML-схемы теперь являются рекомендацией W3C

Вначале XML-схемы были предложены компанией Microsoft, но 2 мая 2001 года консорциум
W3C выдвинул XML-схемы в качестве своей официальной рекомендации.

Спецификация была пересмотрена членами W3C и теперь закреплена.

XML-схемы поддерживают типизацию данных

Одно из самых серьезных преимуществ XML-схем состоит в том, что оно поддерживают
типизацию данных.

    Благодаря этому:
  • Легче описывать разрешенное содержание документа

  • Легче проверять правильность данных

  • Легче работать с данными из баз данных

  • Легче задавать ограничения на данные

  • Легче задавать паттерны данных (форматы данных)

  • Легче преобразовывать данные различных типов

XML-схемы используют синтаксис XML

Еще один существенный плюс XML-схем состоит в том, что они пишутся на XML.

    Благодаря этому:
  • Вам не нужно изучать какой-то еще язык

  • Для редактирования схем можно использовать XML-редактор

  • Для анализирования схем можно использовать XML-napcep

  • Можно работать с XML-схемами посредством XML DOM

  • Можно преобразовывать схемы посредством XSLT

XML-схемы увеличивают достоверность обмена данными

При отправке данных от отправителя получателю, очень важно, чтобы оба имели одинаковые "ожидания" относительно содержания.

С помощью XML-схем отправитель может описать то, каким образом получатель должен эти данные понимать.

Например, дата 1999-03-11 в некоторых странах может быть интерпретирована как 3 ноября, а в других - как 11 марта. XML-элемент, содержащий описание типа данных, например:
<date type="date">1999-03-ll</date>
обеспечит верную трактовку содержания, поскольку тип данных date требует использования формата CCYY-MM-DD.

XML-схемы расширяемы

XML-схемы расширяемы, также, как и XML, поскольку они пишутся на XML.

    Благодаря расширяемости каждой конкретной схемы:
  • Встраивать одни схемы в другие

  • Создавать свои собственные типы данных, производя их из стандартных типов

  • Ссылаться из документа на несколько схем

Ссылки

  • W3C
    eng - The World Wide Web Consortium занимается разработкой web технологий, в том числе на сайте можно найти спецификации CSS, DOM, (X)HTML, MathML, XLink, XML, XPath, XPointer, XSL, и других интернет технологий;

  • XML.com
    eng - один из наиболее полных и постоянно обновляющихся ресурсов, содержит информацию и носвости XML технологий;

  • XML.org
    eng - XML новости и ресурсы, XML каталог - путеводитель по XML продуктам и ресурсам;

  • XMLhack
    eng - новости о последних разработках в области спецификаций и инструментов XML;

DocBook. Коротко.

обновление: June 2006

Коротко о системе подготовки документации DocBook.

Что такое DocBook

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

DocBook поддерживается и стандартизируется DocBook Technical Committee (OASIS).

Описание DocBook первоначально существует в формате SGML и XML DTD, есть также и в других вариантах описания XML, в частности W3C XML Shema.

Командой разработчиков DocBook Open Repository и Norman Walsh разработан набор DSSSL и XSL stylesheets для генерации различных выходных форматов по DocBook документам: HTML, PDF, RTF, man pages, HTML Help.

Мы под DocBook будем понимать не только как таковой XML формат DocBook, но инструментарий DocBook XSL.

Пример кода

<book id="simple_book">
<title>Very simple book</title>

<chapter id="simplechapter">
<title>Chapter 1</title>
<para>Hello world!</para>
</chapter>
</book>

Подробнее

Текущая версия:

Официальный сайт DocBook: DocBook.org

Официальный сайт DocBook XSL:

Основная официальная документация: книга Norman Walsh "DocBook: The Definitive Guide".

Первоначально DocBook использовался в основном Open Source сообществом: в том числе the Linux Documentation Project, the GNOME и GTK+ API справочник, документация ядра Linux. В последнее время все больше организаций используют систему DocBook для всей программной документации, в том числе и для документирования коммерческих продуктов.

Возможности DocBook

  • Формат DocBook условно делится на Book и Article по функциональному назначению. Book используется для подготовки большой технической документации, книг и т.д., тогда как вид Article удобно использовать для статей.

    Заготовка для Article DocBook Автоматически сгененрированная Altova XML Spy *
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
    <?xmlspysps http://www.altova.com/sps/Template/Publishing/docbook.sps?>
    <article>
    <title>Article Title</title>
    <sect1>

    <title>Section1 Title</title>
    <para>Text</para>
    </sect1>
    </article>
    Заготовка для Book DocBook
    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
    <?xmlspysps http://www.altova.com/sps/Template/Publishing/docbook.sps?>
    <book>
    <bookinfo>
    <title>Book Title</title>
    <author>
    <firstname>Author First Name</firstname>

    <surname>Author Last Name</surname>
    </author>
    <publisher>
    <publishername>Publisher Name</publishername>
    </publisher>
    <isbn>ISBN#</isbn>

    <copyright>
    <year>Copyright Year</year>
    </copyright>
    </bookinfo>
    <part>
    <title>Part Title</title>
    <chapter>

    <title>Chapter Title</title>
    <sect1>
    <title>Section1 Title</title>
    <para>Text</para>
    </sect1>
    </chapter>

    </part>
    </book>
  • Существуют специализированные XML-редакторы, и большинство из них умеет работать с DocBook. Теоретически они предоставляют больший сервис по сравнению с обычными текстовыми редакторами: например, автоматически проверяют правильность вводимых тэгов, предлагают выбор тэгов в зависимости от контекста.

  • Благодаря открытому проекту DocBook XSLs, представляющему собой набор прекрасно настраиваемых DSSSL и XSL stylesheets, и существованию ряда как бесплатных, так и коммерческих инструментов для преобразования XML, вы легко (одной кнопкой) получаете свою документацию в различных форматах, в том числе и подготовленной для печати (в формате PDF).

    Norman Walsh разработал модель публикации DocBook.

  • Внешний вид выходных форматов (HTML, CHM, PDF) легко настраивается с помощью CSS, а также через специальную XSL - Driver XSL.

  • DocBook определяет большое количество тегов, что может быть не очень удобно, но так как это XML формат, можно его упростить. Существует также модификация DocBook - Simple DocBook (упрощенный вариант)

  • Возможность модульной подготовки документации. Конечный выходнной файл легко собирается из нескольких отдельных XML файлов. Также возможна вставка текстов, листингов программ и всего чего захотите из внеших файлов. DocBook удобно использовать совместно с любой системой контроля версий.

  • И наоборот, DocBook позволяет из одного исходного документа создавать выходные документы не только в разных выходных форматах , но и с разным содержимым.

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

Предопределенные возможности словаря DocBook:

  • Библиография (список литературы)

  • Перекрестные ссылки (как внутри документа, так и между документами)

  • Сноски, примечания ....

  • Словари (список терминов)

  • Графика (вставка различных изображений)

  • Индексы

  • Таблицы, списки

  • Набор тегов для описания программ и GUI.

Как создавать и редактировать DocBook

Основной инструмент редактирования DocBook - обычный текстовый редактор, например, замечательный UltraEdit, так как DocBook является подмножеством XML и представляет собой обыкновенный текстовый документ с разметкой, аналогично документу HTML.

Подойдет также любой XML редактор, например Altova XML Spy (коммерческий).

В редакторе создается DocBook текст, затем с помощью XSLT процессора получаем данный текст в выходном формате HTML, CHM... Для получения PDF используем еще и XSL-FO процессор.

Преимущества DocBook

Система DocBook:

  • встроенные возможности для работы с различным содржанием;

  • сопровождается системой DocBookStylesheets, позволяющей используя различные инструменты преобразовывать DocBook контент в различные выходные форматы - HTML pages, PDF files, Microsoft HTMLHelp, UNIX man pages, JavaHelp, TeX, Texinfo, и RTF;

    существует набор инструментов (free), которые также позволяют конвертировать различные форматы (man pages, HTML documents, Javadoc, plain text, Texinfo files, and OpenOffice Writer documents) в DocBook

  • хорошо документирована (DocBookThe Definitive Guide и DocBookTutorials, к сожалению, не на русском языке)

  • широко внедрена и протестирована такими коммерческими организациями как Sun, Microsoft, Hewlett-Packard, Novell, SCO, Caldera, и Red Hat, open-source группами - the KDE и GNOME, FreeBSD, Debian, и Linux documentation projects и the Darwin Documentation Project (Apple).

  • полностью открытый (open-source) стандарт

  • прекрасно настраиваемая и расширяемая система

*

Автоматически сгененрированная Altova XML Spy

AutoCAD to SVG

обновление: August 2005

Как сохранить чертежи программы AutoCAD в формате SVG

AutoCAD является одной из самых популярных систем автоматизирорванного проектирования.

Начиная с 2000-й версии в AutoCADe появилась возможность экспорта чертежа в специальный векторный формат DWF. Для просмотра электронных чертежей DWF служит разработанная фирмой программа Autodesk Express Viewer (бесплатнно ею распространяемая). Эта программа также используется как плагин для просмотра DWF файлов в браузере. Здесь же мы рассмотрим способ представления чертежей AutoCAD в формат SVG. В программе AutoCAD 2005 не предусмотрена возможность экспорта чертежей в формат SVG. При необходимости опубликовать в web чертежи AutoCADa один из возможных и наиболее удобный способ это сделать - это использование Adobe Illustrator CS (AI)

Возможности Adobe Illustrator

Инструментарий
Adobe Illustrator CS
версия: 11
платформы: Windows
лицензия: commercial product
разработчик: Adobe
свежесть: 2004
SVG viewer
- плагин для просмотра SVG графики в браузере
версия: 3.01
платформы: windows
лицензия: free
разработчик: Adobe
свежесть: сент. 2003

Начиная с версии 9.0 Adobe Illustrator полностью поддерживает формат SVG, в том числе:

  • сохраняет графические данные в SVG формате (.svg, .svgz)
  • оптимизирует SVG под Adobe SVG Viewer
  • при экспорте в SVG конвертирует слои (layers) в группы (элементы ), названия слоев в идентификаторы групп
  • позволяет добавлять и ассоцировать JavaScript код с элементами SVG (имеет специальную палитру SVG Interactivity Palette)
  • позволяет создавать гиперссылки для SVG элементов

Детально возможности и проблемы создания SVG документов с помощью AI описаны в документе Adobe Using SVG with Adobe® Illustrator® 9.0

Кроме того, Adobe Illustrator CS поддерживает импорт и экспорт в форматы AutoCADa DWG и DXF. Если повезет AI может также удачно импортировать файл DWG, при этом группы и имена групп определенные в AutoCAD сохранятся и в AI в виде слоев. От чего зависит удача в данном случае неизвестно, что известно точно - файлы в формате AutoCAD 2005 (как и 2004) Illustrator не открывает (unknown format and cannot be open). Чертежи, созданные в AutoCAD 2004 или 2005 можно сохранить в формате AutoCAD 2000/LT2000 Drawing, естественно могут быть некоторые потери, но зато этот формат AI чаще всего понимает вполне нормально.

Итак, если удалось открыть в AI файл AutoCADa DWG (или DXF) можно считать, что проблема конвертации из AutoCAD в SVG решена. AI сохраняет информацию о сгруппированных объектах чертежа, т.е. все группы объектов и их имена, которые были определены в AutoCADе в АI будут выглядеть в виде слоев и их имен соответственно, и следовательно сохраняться и в SVG формате.

Пример

Возьмем в качестве тестового примера чертеж из дистрибутива AutoCAD 2005 - 8th floor furniture.dwg:

Так выглядит чертеж 8th floor furniture.dwg в AutoCAD 2005:

Этот же чертеж (8th floor furniture.dwg), открытый в Adobe Illustrator:

Этот же чертеж, сохраненный Illustaratorом в формате SVG:
8th floor furniture.svg (размером 3.5 Мб)
AI может сохранять и в формате SVGZ (сжатый SVG):
8th floor furniture.svgz (размером 761 Kб)
На чертеже 8th floor furniture.dwg серым цветом обозначены данные, хранящиеся в файле 8th floor plan.dwg, поэтому естественно при открытии чертежа в AI данных из другого файла нет. Мы сохранили чертеж 8th floor plan.dwg в формате AutoCAD 2000/LT2000 Drawing и перенесли к уже открытому в AI 8th floor furniture:

в результате получили SVG размером 945Кб (svgz), Проблема в том, что Adobe SVG viewer SVG такого размера обрабатывает уже струдом.

Если с открытием файла DWG в AI возникли какие-то проблемы, можно выделить все кривые в AutoCADe и скопировать их в буфер обмена windows, после чего их можно вставить в документ AI. Цвета всех кривых при этом сохраняться, но объекты придеться объединять в группы вручную.

Альтернативы

В качестве альтернативы предложенному способу конвертации чертежей из AutoCAD в SVG можно использовать существующий бесплатный конвертер gsDXF2SVG (реализованный в виде ActiveX DLL) фирмы Gardos Software

Скачать дистрибутив gsDXF2SVG можно
с сайта Gardos Software: http://business.hol.gr/gardos/download.htm

Это простой и поэтому достаточно удобный в использовании конвертер, создает по сравнению с AI небольшой по размеру SVG,

    но
  • удачно справляется далеко не совсеми чертежами,
  • чертеж с ссылками на другой файл (как например, в 8th floor furniture.dwg, см. выше) не конвертирует вообще,
  • и самый главный его недостаток - конвертер не сохраняет информацию о сгруппированных объектах.

Существует также платные конвертеры для SVG, проверить которые у меня не было возможности. Cписок программного обеспечения для SVG можно найти на оффициальном сайте SVG консорциума W3C или здесь: SVG Implementations.

Аналогично AI работает с SVG и DWG графический пакет Corel Draw, с одной лишь разницей - сохраняет Corel SVG в формате понятном Corel SVG Viewer, что не обязательно гарантирует того, что этот файл откроет Adobe SVG Viewer.

SVG

обновление: January 2006

Коротко об XML-ном графическом формате Scalable Vector Graphics

Что такое SVG? Замена Flash? Совсем нет. Это графика для тех, кому нужна графика в формате XML - векторная, интерактивная и масштабируемая, поддерживаемая основными браузерами (правда, каждый браузер, поддерживает SVG по-своему) и даже PDF.

Зачем? для графического представления XML данных (для ваших данных вы просто пишете XSLT и преобразовываете XML в SVG, т.е. в картинку)

А еще можно искать внутри картинки! Так как текст в SVG - это действительно текст, а не изображение.

И настраивать внешний вид, например диаграмм, с помощью CSS.

Что такое SVG

Элементарный SVG

1.svg

Размер этой GIF: 1 853 байт

Размер соответствующей SVG: 554 байт

SVG (Scalable Vector Graphics, в переводе масшатбируемая векторная графика) - это язык для описания двухмерной графики в XML. SVG предусматривает три типа графических объектов:

- векторная графика (напр. линии, кривые)
- изображения (растрорвая графика)
- текст

SVG принят в качестве рекомендации консорциумом W3C 14 января 2003 Спецификацию SVG 1.1 можно найти на сайте w3c: Scalable Vector Graphics (SVG) 1.1 Specification

Пример svg-кода:

 

<?xml version="1.0"?>

<svg width="175" height="145" >
<g style="stroke:black; fill:red" >
<polygon points=" 5, 50, 5, 81, 12, 64" />
<polygon points=" 5, 45, 41,116, 41, 73" />
<polygon points=" 44, 76, 44,119, 61,115" />
<polygon points=" 46, 73, 75,140,105, 73" />
</g>
<g stroke="black" fill="black">
<polygon points="107, 76,106,119, 89,115" />

<polygon points="144, 45,109,116,109, 73" />
<polygon points="145, 41,167, 4,109, 71" />
<polygon points=" 66, 72, 75, 63, 84, 72" />
</g>
</svg>

это простое изображение журавлика - см. справа на картинке.

Возможности SVG

SVG с анимацией

anima.svg

Для просмотра SVG установите Adobe SVG Viewer и кликните на картинке :)

Графические объекты могут быть сгруппированы, трансформированы, для них может быть определен стиль. SVG графика может быть интерактивной и динамической. Анимация может быть как декларативной (т.е. встроенные элементы SVG анимации в SVG контент), так и определенной с помощью скрипта.

    Что еще может SVG?
  • Поддержка прозрачности

  • Мягкие градиенты

  • Сглаженный текст

  • Специальные эффекты как в Photoshope (используются фильтры)

  • Точно определенное размещение объектов в пикселах

  • Анимация и скрипт

  • Применение стилей (CSS)

  • Встраиваемая растровая графика, символы и Font Glyphs

SVG - это формат для двухмерной векторной графики - так определено в спецификации, но с помощью добавления скрипта (а именно JavaScript) внутрь SVG файла можно создавать трехмерные анимированные изображения, вот пример трехмерного SVG:3D.svg, созданного с помощью Batik SVG Toolkit.

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

Если важен размер изображения, SVG могут быть сохранены с помощью gzip компрессии (расширение SVGZ). Так как SVG - это XML, сжатые SVG могут становиться существенно меньше.

Поддержка SVG браузерами и другими приложениями

SVG и PDF

us_population.pdf

PDF документ со встроенной внутрь интерактивной SVG графикой, поддерживается Adobe Acrobat Pro и Adobe Reader (начиная с 6-й версии).

Использование SVG в веб находится сейчас на стадии младенчества. На сайтах, где используется SVG, обычно изображения автоматически преобразуются в растровый формат с помощью такой библиотеки как, например, ImageMagick (язык C) - быстрая, но не полностью поддерживающая SVG или такой как Batik (java), которая обеспечивает практически полную поддержку SVG, но медленнее.

Для просмотра SVG существуют как самостоятельные (stand-along) SVG просмотрщики, так и плагины для браузеров. Самым распространенным сейчас, пожалуй, является плагин для браузеров Adobe SVG Viewer, который можно бесплатно скачать с сайта Adobe (был выпущен в сентябре 2003 года и с тех пор не обновлялся)

Существует также плагин от Corel: Corel SVG Viewer. Но очень часто SVG, которые может показывать Adobe Viewer, не воспроизводятся Corel SVG Viewer и наоборот.

Что касается браузеров - без дополнительных плагинов SVG могут показывать Mozilla и Opera c 8-й версии. Для этого SVG графика может быть встроена непосредственно в разметку HTML, т.к. является XML форматом.

Во всех остальных браузерах необходима установка соответствующего плагина и SVG включается в разметку из внешнего файла с помощью тега embed, например <embed xsrc="graph.svgz" mce_src="graph.svgz" width="625.5" height="393" type="image/svg+xml">

SVG также может быть встроен в PDF документ. Adobe Acrobat Reader поддерживает SVG начиная с 6-й версии. Для встраивания SVG в PDF существует плагин для Adobe Acrobat Pro.

Для мобильных устройств, телефонов и PDA, также существует поддержка SVG. Специально для них были разработаны варианты SVG формата: SVG Tiny (SVGT) and SVG Basic (SVGB). Кроме того, конкурент SVG - Macromedia Flash Lite частично поддерживает SVG Tiny начиная с версии 1.1.

На сайте w3c можно найти официальный список программного обеспечения для SVG.

Как создавать и редактировать SVG

SVG и 3D

3D.svg

Трехмерная анимированная SVG картинка, созданная с помощью Batik SVG Toolkit

Основной инструмент редактирования SVG - обычный текстовый редактор, например, замечательный UltraEdit, так как SVG является подмножеством XML и представляет собой обыкновенный текстовый документ с разметкой, аналогично документу HTML.

Возможно автоматизированное создание SVG на основе XML данных с помощью преобразования XSLT.

Для визуального редактирования (рисования) SVG подойдет Adobe Illustrator версии не ниже 9.0, его преимущество в том, что он не боится больших объемов. С помощью Illustratora можно создавать и редактировать сложные SVG большого размера, добавляя необходимый скрипт с помощью специальной палитры Illustratora - SVG interactivity pallete. Однако AI экспортирует SVG с большим колличеством лишнего кода, якобы оптимизируя SVG под Adobe SVG Viewer.

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

В некоторых графических пакетах, например Corel Draw, как и в Adobe Illustrator включена возможность экспорта графики в SVG.

К сожалению, ни одного качественного приложения, которое бы обеспечивало возможность простого быстрого визуального создания динамических и интерактивных SVG (так как, например, в Macromedia Flash) я не нашла.

На Java существует открытая (бесплатная) библиотека Batik SVG Toolkit для генерации, отображения и манипулирования SVG графикой. Библиотека практически полностью поддерживает формат SVG 1.1.

Почему SVG? 10 причин

Еще один интересный пример SVG

eyechart.svg

Интерактивный SVG

  • Легко редактирвать - SVG - это простой текст в легкочитаемом XML и CSS формате;

  • Контент, в котором можно искать - внутри графики можно осуществлять поиск, в том числе и с помощью поисковых машин;

  • Локализация - легко переводить графический текст на различные языки;

  • Открытый стандарт;

  • Растровые эффекты для векторной графики - применимы real-time эффекты как в photoshope (тень, прожектор, размытие, выдавливание...);

  • Обработка данных - создание графики на лету с помощью скриптов;

  • Богатые возможности работы с текстом - встраивание шрифтов или выбранного символа;

  • Точно определенное размещение объектов в пикселах;

  • Error Handling - используется "zero-tolerance" XML; может указываться номер строки и колонки для SVG ошибок.

    Чем Flash лучше?
  • Больше подходит для анимации (существует удобный инструмент для создания анимации во Flash);

  • Плагин для браузера установлен почти у всех пользователей Windows;

  • ActiveX плагин для браузера менее 400КБ (Adobe SVG Viewer около 2.3 МБ);

  • Популярность Flash у дизайнеров и наличие нескольких удобных инструментов для создания Flash-роликов.

Применение SVG

SVG слайд-шоу
  • Простые, масштабируемые иллюстрации

  • Карты

  • Финансовые, и не только, диаграммы

  • Проектные и технические схемы

  • Анимация

  • Обмен, пересылка данных

  • Презентации в виде слайд-шоу

Вот еще несколько, пожалуй самых интересных примеров SVG графики - и опять от Adobe:


Интерактивные диаграммы


CML, XSL, JavaScript and SVG

ViJu Docbook Converter

обновление: May 2007

ViJu Docbook Converter - программа автоматизирующая процесс преобразования Docbook XML в различные выходные форматы, сейчас поддерживаются HTML, PDF, CHM.

XML Copy Editor

Vitaliy 13/06/2007

Altova XMLSpy - это хороший XML редактор, но очень очень очень дорогой. Конечно есть еще Oxygen XML Editor, который стоит в десять раз дешевле, но мне всегда хотелось чего-нибудь полегче. И вот я нашел в журнале Linux Format упоминание про XML Copy Editor, мне эта штука понравилась: небольшая, простая, можно работать с XPath, XSL, Docbook, позволяет валидировать документы, скоро станет еще лучше.

Про XULRunner

Vitaliy 22/11/2006

Тем, кто интересуется XUL, может показаться, что разработки ведутся полу подпольно. Авторы почти забыли про документирование и анонсы. На официальном сайте ссылка на не очень свежий XULRunner, а ссылка на nightly builds вообще ведет не туда куда надо. Но как оказалось работа кипит - только тихо. Вот ссылочка

ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/