Почему на ссылку на тот же документ в SVG влияет HTML-тег ‹base›?

У меня есть HTML-страница с тегом <base>, также содержащая SVG. Ссылки на один и тот же документ, такие как приведенные ниже в SVG, затем терпят неудачу:

<html>
  <head>
    <base href="http://my/server/basedir">
  </head>
  <body>
    <svg>
      <g>
        <path d="M100,100 L150,150" id="path"/>
        <text>
          <textpath xlink:href="#path"/>
        </text>
      </g>
    </svg>
  </body>
</html>

Ссылка xlink:href="#path" не разрешается. Это прекрасно работает без элемента HTML base. Это также работает, если я заменю атрибут href в элементе textpath абсолютным IRI, за которым следует идентификатор фрагмента.

Мне кажется, что SVG должен обрабатывать IRI одного и того же документа по-разному и независимо от HTML base. В http://www.w3.org/TR/xmlbase/#same-document говорится «Разыменование ссылок на один и тот же документ обрабатывается особым образом», хотя это допускается в контексте xml:base. Между прочим, я играл с добавлением xml:base к элементу svg в надежде переопределить настройку HTML base, потому что не мог понять, как заставить это работать.


person Community    schedule 26.11.2011    source источник


Ответы (1)


Случай 1: без xml:base

Работает в IE(Edge),Chrome, но не в Firefox.

<html>
  <head>
    <base href="http://my/server/basedir">
  </head>
  <body>
    <svg width="300" height="300" xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
      <g>
        <path d="M100,100 L150,150" id="path"/>
        <text>
          <textpath xlink:href="#path">Hello</textpath>
        </text>
      </g>
    </svg>
  </body>
</html>

Случай 2: с xml:base

Работает в IE(Edge),Chrome, Firefox.

Если URL-адрес этой страницы равен http://my/thisfile.htm, установите xml:base="http://my/thisfile.htm" в теге svg или теге textpath.

<html>
  <head>
    <base href="http://my/server/basedir">
  </head>
  <body>
    <svg width="300" height="300" xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xml:base="http://my/thisfile.htm">
      <g>
        <path d="M100,100 L150,150" id="path"/>
        <text>
          <textpath xlink:href="#path">Hello</textpath>
        </text>
      </g>
    </svg>
  </body>
</html>
person cuixiping    schedule 08.12.2015
comment
xml:base устарело bugs.chromium.org/p/chromium/issues/detail ?id=341854 - person André Werlang; 13.04.2017