XPointers в SVG - PullRequest
       43

XPointers в SVG

2 голосов
/ 21 марта 2010

Я пытался заставить работать XPointer URI в SVG-файле, но пока не получилось.Попробовав что-то более сложное и потерпевшее неудачу, я упростил это до простой ссылки на ID.Тем не менее, это все еще не работает.

Спецификация кажется довольно ясной об этой реализации:

http://www.w3.org/TR/SVG/struct.html#URIReference

В Интернете я нашел пример того, что должно быть рабочей ссылкой XPointerдокумент SVG.Вот Оригинал .Вот версия, которую я скопировал:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="500" height="200" version="1.1" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink">

    <defs>
        <rect id="simpleRect" width="100px" height="75px"/>
    </defs>
    <use xlink:href="#simpleRect" 
        x="50" y="50" style="fill:red"/>
    <use xlink:href="#xpointer(id('simpleRect'))" 
        x="250" y="50" style="fill:yellow"/>
</svg>

Это должно отобразить два прямоугольника ... один красный и один желтый.Я пробовал рендеринг с Firefox 3.6 и Inkscape 0.47.Нет успехаПоказывается только красный прямоугольник.

Чего мне не хватает?

Спасибо за любую помощь, которую вы можете предложить

Ответы [ 2 ]

2 голосов
/ 11 марта 2016

В настоящее время (по состоянию на 10 марта 2016 г., SVG 1.1 Second Edition) поддержка рендеринга XPointers в браузерах отсутствует. W3Schools пишет об этом следующим образом :

Поддержка браузера XPointer

Нет поддержки браузера для XPointer. Но XPointer используется в других языках XML.

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

0 голосов
/ 21 марта 2010

Из секции связывания спецификации:

<URI-reference> = [ <absoluteURI> | <relativeURI> ] [ "#" <elementID> ]    -or-
<URI-reference> = [ <absoluteURI> | <relativeURI> ] [ "#xpointer(id(" <elementID> "))" ]

Так в чем же преимущество использования синтаксиса xpointer? Все реализации SVG, которые я видел, поддерживают альтернативный (более короткий) синтаксис, показанный выше (#myId). Синтаксис xpointer, похоже, не так хорошо поддерживается.

...