2011-11-26 9 views
6

Ho una pagina HTML con un tag <base>, contenente anche SVG. riferimenti dello stesso documento, come il seguito all'interno del SVG poi falliscono:Perché il riferimento allo stesso documento in SVG è interessato dal tag 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> 

Il riferimento xlink:href="#path" non riesce a risolvere. Funziona perfettamente senza l'elemento HTML base. Funziona anche se sostituisco l'attributo href sull'elemento textpath con un IRI assoluto seguito dall'identificatore del frammento.

Mi sembra che SVG debba trattare l'IRI dello stesso documento in modo diverso e indipendente dall'HTML base. In http://www.w3.org/TR/xmlbase/#same-document viene visualizzato il messaggio "Il dereferenziamento dei riferimenti allo stesso documento viene gestito in modo speciale.", Sebbene concesso nel contesto di xml:base. A proposito, ho giocato con l'inserimento dinell'elemento svg nella speranza di ignorare l'impostazione HTML base per non riuscire a capire come farlo funzionare.

risposta

0

Caso 1: senza xml:base

Lavori in IE (Bordo), Chrome, ma non 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> 

Caso 2: con xml:base

Lavori in IE (Edge), Chrome, Firefox.

Se l'URL della pagina è http://my/thisfile.htm, impostare xml:base="http://my/thisfile.htm" sul tag svg o sul tag del percorso di testo.

<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' è deprecato https://bugs.chromium.org/p/chromium/issues/detail?id=341854 –