Храним данные в СВГ

В СВГ можно хранить свои данные. Это могут быть дополнительные количественные или качественные характеристики векторной модели, которые не поддерживает формат СВГ.

Для хранения данных придумываем новый тег newtag.

СВГ основан на XML. Согласно спецификации надо описать каждый новый тег в ДТД файле, выложить его на сервер и сослаться в заголовке.

<svg ... xmlns:newtag="http://antonlyakh.ru/new-svg-tags.dtd">

По факту работает, если указать пространство имен xhtml.

<svg ... xmlns:newtag="http://www.w3.org/1999/xhtml">

И работает даже если не упоминать новый тег в заголовке.

<svg ...>

Вставляем тег в текст.

<svg ...>
  <newtag>My own data.</newtag>
</svg>

Прописываем атрибуты тега.

<newtag scale="1" scaleunit="mkm" scalepx="254" />

Комбинируем атрибуты и содержимое.

<newtag scale="1" scaleunit="mkm" scalepx="254">Very usefull data.</newtag>

Текст на русском кодируем в УТФ-8.

<newtag lang="ru">╨Я╨╛╨╝╨╜╨╕, ╤З╤В╨╛ ╤А╤Г╤Б╤Б╨║╨╕╨╣ тАФ ╨╜╨╡ ╤П╨╖╤Л╨║ ╨╝╨╡╨╢╨┤╤Г╨╜╨░╤А╨╛╨┤╨╜╨╛╨│╨╛ ╨╛╨▒╤Й╨╡╨╜╨╕╤П.</newtag>

Загружаем файл в браузер — браузер правильно рисует вектор и не ругается на теги.

Открываем файл в Иллюстраторе или Инкскейпе. Правим. Сохраняем. Смотрим исходник — теги с данными сохранились. Иллюстратор и Инскейп теги не портят.

Мало того, можно окружить новым тегом команду рисования.

<newtag scale="1" scaleunit="mkm"><line ... /></newtag>

Это скроет векторный объект, и он не будет виден ни в браузере, ни в векторных редакторах, но будет доступен парсеру.

Поделиться
Отправить
2018   СВГ
Популярное