3

我一直试图让 XPointer URI 在 SVG 文件中工作,但到目前为止还没有任何运气。在尝试了更复杂但失败的事情后,我将其简化为仅引用一个 ID。但是,这仍然失败。

规范似乎很清楚这个实现:

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

我在网上找到了一个示例,说明在 svg 文档中应该是一个有效的 XPointer 引用。这里是原文。这是我复制出来的版本:

<?xml 版本="1.0" 独立="否"?>
<!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" 版本="1.1"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink">

    <定义>
        <rect id="simpleRect" width="100px" height="75px"/>
    </defs>
    <使用 xlink:href="#simpleRect"
        x="50" y="50" style="fill:red"/>
    <使用 xlink:href="#xpointer(id('simpleRect'))"
        x="250" y="50" 样式="填充:黄色"/>
</svg>

这应该显示两个矩形......一个红色和一个黄色。我尝试使用 Firefox 3.6 和 Inkscape 0.47 进行渲染。没有成功。只有红色矩形显示。

我错过了什么?

谢谢你尽你所能的帮助

4

2 回答 2

2

目前(截至 2016 年 3 月 10 日,SVG 1.1 第二版)不支持在浏览器中呈现 XPointer。W3Schools 对此的描述如下

XPointer 浏览器支持

XPointer 没有浏览器支持。但是 XPointer 用于其他 XML 语言。

这有点令人沮丧,因为所有官方文档都懒得区分 SVG 的浏览器支持(Internet 就绪)功能和技术支持的、纯 XML 类似的 SVG 功能。

于 2016-03-10T23:58:29.160 回答
0

从规范的链接部分

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

那么使用 xpointer 语法有什么好处呢?我见过的所有 svg 实现都支持上面显示的替代(较短)语法(#myId)。xpointer 语法似乎不太受支持。

于 2010-03-21T13:10:04.663 回答