我有一个带有<base>
标记的HTML页面,也包含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
元素,这可以正常工作。如果我使用绝对IRI后跟片段标识符替换href
元素上的textpath
属性,它也可以工作。
在我看来,SVG应该以不同的方式处理同一文档的IRI并且独立于HTML base
。在http://www.w3.org/TR/xmlbase/#same-document中,它说“取消引用相同文档引用是专门处理的。”,虽然在xml:base
的上下文中被授予。顺便说一下,我在xml:base
元素上添加了svg
,希望覆盖HTML base
设置无法弄清楚如何使其发挥作用。
答案 0 :(得分:0)
案例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。
如果此网页网址为http://my/thisfile.htm
,则在svg标记或文字路径标记上设置xml:base="http://my/thisfile.htm"
。
<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>