Градиентные серверы как внешние файлы в SVG

Возможный дубликат:
Включить SVG файл в SVG

свойство fill в SVG принимает URL-адрес, указывающий на элемент gradient/pattern, экземпляр так называемого "сервера рисования".

Вопрос: Возможно ли в любом браузере (то есть не в IE) использовать градиент, определенный во внешнем файле SVG? Например, в rect.svg,

<rect fill="url(grad.svg#my_grad)" />

и соответствующий элемент <linearGradient /> в grad.svg?

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

Приветствия,

Обновление: Этот вопрос по своему смыслу дублирует Включить SVG файл в SVG (где на вопрос был дан ответ на минимум Firefox). Я держу открытым, потому что я думаю, что название и теги, скорее всего, будут найдены, ну, вы.

Ответы

Ответ 1

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

Я только что написал и протестировал небольшой файл образца.

В Inkscape он не работает, но он работает с Apache Batik Toolkit.

Для поддержки браузера я загрузил файл в browsershots.org и подвел итог: некоторые браузеры поддерживают внешние градиенты - т. например:.

  • Firefox 3.0 NO
  • Firefox 3.5 YES
  • Opera 9.64, 10.0 YES
  • Safari 4 NO
  • Chrome 2.0 NO

Ответ 2

Если я правильно понял, измените URL-адрес на

<rect fill="url(grad.svg?param=my_grad" />

А затем сгенерируйте svg динамически?