# Attribute “xmlns:web” not allowed here.

> Canonical HTML version: https://rocketvalidator.com/html-validation/attribute-xmlns-web-not-allowed-here
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The `xmlns:web` attribute is an XML namespace declaration for a `web` prefix, and HTML doesn't allow prefixed namespace declarations on any element.

In XML, `xmlns:web="http://example.com/schemas/web/"` binds the prefix `web` to a namespace, so names like `web:result` can appear in the document. The URI identifies the namespace, and `web` is only a short alias the template's author picked. On the root `<html>` tag, the declaration is typically left over from a template first written as XHTML, where it sat next to `xmlns="http://www.w3.org/1999/xhtml"` and `xml:lang`.

The HTML parser doesn't process namespace declarations. It keeps `xmlns:web` as a plain attribute with a colon in its name, and it lowercases the name, so the validator reports `xmlns:web` even when the source says `xmlns:Web`. The only namespace attribute HTML accepts is `xmlns`, with the exact value `http://www.w3.org/1999/xhtml`. That one is allowed but does nothing in an HTML page, so you can keep it or drop it.

Delete `xmlns:web` from the tag. Browsers don't act on the declaration, so removing it doesn't change how the page looks or works. If the markup also has `web:` attributes, the validator reports each of them as not allowed. Move that data into `data-*` attributes, or remove it if nothing reads it.

## Invalid example

```html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:Web="http://example.com/schemas/web/">
<head>
  <title>Search results</title>
</head>
<body>
  <p>Results for your search.</p>
</body>
</html>
```

## Valid example

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Search results</title>
</head>
<body>
  <p>Results for your search.</p>
</body>
</html>
```
