2011-11-26 7 views
6

Mam stronę HTML z tagiem <base>, również zawierającą SVG. referencje tego samego dokumentu, takie jak poniżej w SVG następnie zawieść:Dlaczego odniesienie do tego samego dokumentu w SVG dotyczy znacznika HTML <base>?

<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> 

Odniesienie xlink:href="#path" nie rozwiąże. To działa dobrze bez elementu HTML base. Działa również, gdy zastępuję atrybut href na elemencie textpath bezwzględnym IRI, po którym następuje identyfikator fragmentu.

Wydaje mi się, że SVG powinien traktować IRI tego samego dokumentu inaczej i niezależnie od HTML base. W dokumencie http://www.w3.org/TR/xmlbase/#same-document jest napisane, że "Dereferencja odwołań tego samego dokumentu jest obsługiwana specjalnie.", Chociaż przyznano to w kontekście xml:base. Przy okazji, grałem z umieszczaniem elementu na elemencie svg w nadziei, że zastąpię ustawienie HTML base, ponieważ nie mogłem wymyślić, jak wykonać tę pracę.

Odpowiedz

0

Przypadek 1: bez xml:base

Works w IE (Edge), Chrome, ale nie 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> 

Przypadek 2: z xml:base

Works w IE (Edge), Chrome, Firefox.

Jeśli ten adres strony to http://my/thisfile.htm, ustaw xml:base="http://my/thisfile.htm" na znaczniku svg lub znaczniku tekstowym.

<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> 
+1

'xml: base' jest przestarzałe https://bugs.chromium.org/p/chromium/issues/detail?id=341854 –

Powiązane problemy