Skip to content

href vs xlink:href #334

@Mbodin

Description

@Mbodin

This is an issue that will probably disappear by itself when moving to SVG 2. I think that it can still be useful to document it in the meantime.

From what I understand, in SVG 1.1, one should use xlink:href for the <use> tag, but in SVG 2, it has been replaced by href. Some people ( https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/href ) argue that one could use both just in case, but I feel that this solution would not be in the spirit of TyXML (as such a document would not strictly follow neither SVG 1.1 nor SVG 2).

Currently in TyXML, there are two functions a_href and a_xlink_href. The a_xlink_href function produces xlink:href and is marked as depreciated, whilst a_href produces href.

The issue is that the doctype that TyXML produces indicates SVG 1.1:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink">

The link http://www.w3.org/2000/svg seems to be mutable (so I guess that it currently means SVG 2?).

If I open such an SVG file with Inkscape, by default (there might be an option to change this behaviour), the <use href> are simply ignored, which is frustrating.

In order to generated SVG files that can be opened in Inkscape, I have to use a_xlink_href instead of a_href. In practise I just do the following to just use a_href without thinking too much about it:

let module Svg = struct
  include Svg
  let a_href = a_xlink_href
end

The generated files are then understood by Inkscape. (And I get warning messages about a_xlink_href being depreciated.)

In Tyxml_js, there is no generated doctype when adding the SVG within the DOM using Html.svg, so Firefox assumes that we are in SVG 2 and xlink:href won't be recognised: for the <use> tags to work, I need to use href instead.

It's a bit frustrating. Now that I understand the issue, I can work around this, but it took me some time. This issue will solve itself when TyXML will follow SVG 2, but I feel that a_xlink_href shouldn't be marked as depreciated in the meantime.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions