首页 文章

SVG中的XPointers

提问于
浏览
1

我一直在努力让XPointer URI在SVG文件中运行,但到目前为止还没有运气 . 在尝试了更复杂和失败的事情之后,我将其简化为仅引用ID . 但是,这仍然失败 .

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

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

我在网上找到了svg文档中应该有效的XPointer引用的例子 . 这是Original . 这是我复制的版本:

<?xml version="1.0" standalone="no"?>
<!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" version="1.1" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink">

    <defs>
        <rect id="simpleRect" width="100px" height="75px"/>
    </defs>
    <use xlink:href="#simpleRect" 
        x="50" y="50" style="fill:red"/>
    <use xlink:href="#xpointer(id('simpleRect'))" 
        x="250" y="50" style="fill:yellow"/>
</svg>

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

我错过了什么?

谢谢你尽你所能的帮助

2 回答

  • 0

    目前(截至2016年3月10日,SVG 1.1 Second Edition)不支持在浏览器中呈现XPointers . W3Schools writes about this as follows

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

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

  • 2

    来自规范的linking section

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

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

相关问题