Внешне определенные маркеры не отображаются в SVG - PullRequest
6 голосов
/ 10 февраля 2012

Я пытаюсь сделать маркеры унифицированными для множества изображений SVG.Моя проблема в том, что я не могу заставить работать внешние ссылки в определениях маркеров.Это может быть связано с вопросом Как правильно ссылаться на внешний svg-файл в svg? , но ссылка по-прежнему отсутствует.

Я сделал небольшой пример, чтобы продемонстрировать свою проблему:

b.svg (на который ссылаются):

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
    <defs>
        <circle id="b" r="6" stroke="black" fill="green" />
        <marker id="b_end"
          orient="auto"
          style="overflow:visible">
            <use xlink:href="#b" />
        </marker>
    </defs>
</svg>

a.svg (пытается ссылаться на b.svg):

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
    <defs>
        <circle id="a" r="6" stroke="black" fill="yellow" />
        <marker id="a_end"
          orient="auto"
          style="overflow:visible">
            <use xlink:href="#a" />
        </marker>
        <marker id="b_end"
          orient="auto"
          style="overflow:visible">
            <use xlink:href="b.svg#b" />
        </marker>
    </defs>
    <path d="m 10,10 20,20" style="marker-end:url(#a_end)" stroke="black" />
    <path d="m 40,10 20,20" style="marker-end:url(#b_end)" stroke="black" />
    <path d="m 70,10 20,20" style="marker-end:url(b.svg#b_end)" stroke="black" />
</svg>

Как видите, я ссылался на маркер дляпервая строка через внутренний идентификатор (на самом деле две, так как у маркера тоже есть ссылка).Это работает нормально.

Я использовал определение внутреннего маркера с внешним путем для второй строки.Не работает(Строка отображается с наклоном, маркер - нет.)

Я использовал внешний маркер в третьей строке.Это также не работает.

Проблема может заключаться в том, что внешний контент отсутствует в DOM хоста - по крайней мере, при разрешении ссылки в стиле.

ОК, ночто я могу с этим поделать?Как я могу ссылаться на внешние элементы для маркеров в SVG?

1 Ответ

1 голос
/ 17 февраля 2012

Я думаю, что могу ответить на свой первоначальный вопрос, основываясь на моих экспериментах и ​​на комментариях, оставленных Робертом.

Код, который я написал , должен работать в SVG, а работает работа с Opera и Firefox.Кроме того, он работает при создании PDF с Apache FOP, что было для меня ключевым моментом.

Единственная проблема заключается в том, что внешние ссылки не работают в IE, Chrome и Safari.Я не уверен, когда внешние ссылки из определений стилей были реализованы в Firefox: он не работает в 7.0, но работает в 11.

...