@namespace
==========

**`@namespace`** es una regla que define XML namespace a ser usados en una hoja de estilos CSS. Los namespaces definidos pueden utilizarse para restringir selectores universales, types, y selectores de atributos para seleccionar sólo elementos dentro de ese namespace.La regla `@namespace` generalmente sólo es útil cuando se trata de documents que contienen múltiples namespace—como HTML5 con SVG o MathML, o XML que mezclamúltiplesvocabularios.


```css
@namespace url(http://www.w3.org/1999/xhtml);
@namespace svg url(http://www.w3.org/2000/svg);

/\* Esto coincide con todos los elementos XHTML <a>, ya que el XHTML es el namespace por defecto sin prefijo \*/
a {
}

/\* Esto coincide con todos los elementos SVG <a> \*/
svg|a {
}

/\* Esto concuerda con todos los elementos XHTML y SVG <a> elements \*/
\*|a {
}
```


Cualquier `@namespace` debe seguir todas las reglas de @charset y @import, y preceder a todas las demás reglas y declaraciones de estilo de una hoja de estilos.

Se puede utilizar `@namespace` para definirun **namespace por defecto** de una hoja de estilos. Cuando se define un namespace por defecto, todos los selectores universales y tipos (pero no los selectores de atributo, véase la nota a continuación) se aplican únicamente a los elementos de ese namespace

La regla `@namespace` también puede usarse para definir un **prefijo de namespace**. Cuando un selector universal, tipo, o selector de atributo se antepone a un prefijo de un namespace, ese selector sólo coincide si el namespace y el nombre del elemento o atributo coinciden.

En HTML5, conocidos comoelementos externos automaticamente se les asignarán un namespace. Esto significa que los elementos HTML actuarán como si estuvieran en un namespace XHTML (`http://www.w3.org/1999/xhtml`), incluso si no hay ningún atributo xmlns en ninguna parte del document, y los elementos <svg> y <math> se les asignará un namespace propio (`http://www.w3.org/2000/svg` and `http://www.w3.org/1998/Math/MathML`).

**Nota:** En XML, a menos que se defina un prefijo directamente sobre un atributo (*ejemplo.*, `xlink:href`), ese atributo no tiene namespace. En otras palabras, los atributos no heredan el namespace del elemento en el que están. Para que coincida con este comportamiento, el namespace por defecto en CSS no se aplica a los selectores de atributos.

Sintaxis
--------


```css
/\* Namespace por defecto \*/
@namespace url(XML-namespace-URL);
@namespace "XML-namespace-URL";

/\* Namespace sin prefijo \*/
@namespace prefix url(XML-namespace-URL);
@namespace prefix "XML-namespace-URL";
```

### Sintaxis oficial
```

@namespace =   
  @namespace <namespace-prefix>? [ <string> (en-US) | <url> ] ;    
  
<namespace-prefix> =   
  <ident> (en-US)    
  
<url> =   
  <url()>  |  
  <src()>    
  
<url()> =   
  url( <string> (en-US) <url-modifier>\* )  |  
  <url-token>                        
  
<src()> =   
  src( <string> (en-US) <url-modifier>\* )    
  
```

Especificaciones
----------------

| Specification |
| --- |
| CSS Namespaces Module Level 3 # declaration |

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.