# Bad value “https://www.w3.org/1999/xlink” for the attribute “xmlns:link” (only “http://www.w3.org/1999/xlink” permitted here).

> Canonical HTML version: https://rocketvalidator.com/html-validation/bad-value-https-www-w3-org-1999-xlink-for-the-attribute-xmlns-link-only-http-www-w3-org-1999-xlink-permitted-here
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

XML namespaces are identified by URI strings that act as unique names. They are never fetched or loaded by the browser — they simply serve as an identifier that must match exactly what the specification defines. The XLink namespace has been defined as `http://www.w3.org/1999/xlink` since its inception, and changing the protocol to `https` creates a completely different string that parsers and validators do not recognize.

It's a common and understandable mistake. Developers are trained to prefer `https://` URLs everywhere for security, and many linting tools or habits may encourage automatically converting `http://` to `https://`. However, namespace URIs are a special case where this rule does not apply. The string is purely declarative — no network request is made, and no security benefit comes from using `https`.

It's also worth noting that the `xmlns:xlink` attribute is largely obsolete in modern HTML. When SVG is embedded directly in an HTML5 document, browsers automatically handle namespace resolution. You only need `xmlns:xlink` when serving SVG as standalone XML (with an `.svg` file or `application/xhtml+xml` content type). In most cases, you can simply remove the attribute altogether and use `xlink:href` or, even better, the plain `href` attribute, which is now supported on SVG elements like `<use>`, `<image>`, and `<a>`.

## Examples

### Incorrect: using `https://` in the namespace URI

```html
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink">
  <use xlink:href="#icon-star"></use>
</svg>
```

This triggers the validation error because `https://www.w3.org/1999/xlink` does not match the required namespace identifier.

### Fixed: using the correct `http://` namespace URI

```html
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <use xlink:href="#icon-star"></use>
</svg>
```

### Preferred: removing the namespace and using plain `href`

In HTML5, you can drop the `xmlns:xlink` declaration entirely and use the standard `href` attribute instead of `xlink:href`:

```html
<svg xmlns="http://www.w3.org/2000/svg">
  <use href="#icon-star"></use>
</svg>
```

This is the cleanest approach for inline SVG in modern HTML documents. The `xlink:href` attribute is deprecated in SVG 2, and all modern browsers support plain `href` on SVG linking elements.
