Académique Documents
Professionnel Documents
Culture Documents
Este documento es una traduccin al castellano de la Recomendacin del W3C "Namespaces in XML",
publicada el 14 de enero de 1999.
Esta traduccin ha sido publicada el 17 de agosto de 2001.
El URI de este documento es http://html.conclase.net/w3c/xml-names-es/Overview.html
El URI del documento original es http://www.w3.org/TR/1999/REC-xml-names-19990114
El URI de la ltima versin de la Recomendacin en ingls es http://www.w3.org/TR/REC-xml-names
La nica versin normativa de este documento es la versin original en ingls que se encuentra en el sitio web
del W3C. Ninguna parte del presente documento en castellano es normativa aunque se especifique lo contrario.
Vase el Aviso de Copyright al final de este documento.
Este documento puede contener errores de traduccin.
La traduccin ha sido realizada por <Juan R. Pozo>, <jrpozo@conclase.net>
Copyright 1999 W3C (MIT, INRIA, Keio), Todos los Derechos Reservados. Se aplican todas las condiciones de
responsabilidad, marcas comerciales, uso de documentos, y licencias de software del W3C.
Resumen
Los espacios de nombres XML proporcionan un mtodo simple para cualificar nombres de elementos y atributos
usados en el Lenguaje Extensible para el Formato de Documentos (Extensible Markup Language) asocindolos con
espacios de nombres identificados por referencias URI.
La lista de errores conocidos de la versin original en ingls de esta especificacin est disponible en http://www.w3.
org/XML/xml-names-19990114-errata.
N.T.: La correcin de estas erratas ya ha sido tenida en cuenta en la traduccin al castellano del documento.
Para informar sobre errores presentes en la traduccin espaola de la especificacin, puede ponerse en
contacto con el traductor en <jrpozo@conclase.net>. Gracias por su colaboracin.
Tabla de Contenidos
1 Motivacin y Sumario
1.1 Un Comentario sobre la Notacin y el Uso
2 Declaracin de Espacios de Nombres
3 Nombres Cualificados
4 Utilizacin de Nombres Cualificados
5 Aplicacin de Espacios de Nombres a Elementos y Atributos
5.1 Ambito de Aplicacin de los Espacios de Nombres
5.2 Espacios de Nombres por Defecto
5.3 Unicidad de Atributos
6 Conformidad de Documentos
Apndices
1 Motivacin y Sumario
Nos imaginamos aplicaciones del Lenguaje XML en las que un solo documento XML puede contener elementos y
atributos (a los que aqu se hace referencia como "vocabulario de formato") que estn definidos para y son usados por
distintos mdulos de software. Una de las motivaciones es la modularidad; si existe un vocabulario de formato bien
entendido y para el cual hay programas tiles disponibles, es mejor reutilizar este vocabulario y no reinventarlo.
Tales documentos, que contiene varios vocabularios de formato, plantean problemas de reconocimiento y colisin. Los
mdulos de software tienen que ser capaces de reconocer las etiquetas y atributos para cuyo procesamiento fueron
diseados, incluso si se producen "colisiones" cuando un cdigo de formato destinado a algn otro paquete de
software usa el mismo nombre de atributo o de tipo de elemento.
Estas consideraciones exigen que las estructuras de los documentos deban tener nombres universales, cuyo mbito de
aplicacin se extienda ms all del documento que las contiene. Esta especificacin describe un mecanismo, los
espacios de nombres XML, que lleva esto a cabo.
[Definicin: Un espacio de nombres XML es un conjunto de nombres, identificados por una referencia URI [RFC2396],
que se utilizan en documentos XML como tipos de elemento y nombres de atributo. ] Los espacios de nombres XML
difieren de los "espacios de nombres" usados convencionalmente en las disciplinas de programacin en que la versin
XML tiene estructura interna y no es, matemticamente hablando, un conjunto. Estos aspectos se tratan con ms
profundidad en A La Estructura Interna de los Espacios de Nombres XML.
[Definicin: Se considera que las referencias URI que identifican espacios de nombres son idnticas cuando son
exactamente las mismas carcter por carcter.] Obsrvese que las referencias URI que no sean idnticas en este
sentido pueden ser de hecho funcionalmente equivalentes. Por ejemplo, referencias URI que slo difieren en
maysculas/minsculas, o que estn en entidades externas que tengan URIs base efectivos distintos.
Los nombres de los espacios de nombres XML pueden aparecer como nombres cualificados, que contienen un smbolo
de dos puntos (:) que divide al nombre en un prefijo del espacio de nombres y una parte local. El prefijo, que
corresponde a la referencia URI, selecciona un espacio de nombres. La combinacin del espacio de nombres URI
gestionado universalmente y del espacio de nombres propio del documento produce identificadores que son nicos a
nivel universal. Se proporcionan mecanismos para definir el mbito de los prefijos y los valores por defecto.
Las referencias URI pueden contener caracteres no permitidos en nombres, de modo que no pueden utilizarse
directamente como prefijos de espacios de nombres. Por tanto, el prefijo de espacio de nombres acta como
intermediario de una referencia URI. Se utiliza una sintaxis tipo atributo, descrita ms adelante, para declarar la
asociacin del prefijo de espacio de nombres con una referencia URI; los programas que soporten esta propuesta de
espacios de nombres deben reconocer y estar de acuerdo con estas declaraciones y prefijos.
Obsrvese que muchos de los smbolos no terminales de las producciones de esta especificacin no estn definidos
aqu, sino en la especificacin XML [XML]. Cuando los smbolos no terminales aqu definidos tienen los mismos
nombres que otros smbolos no terminales definidos en la especificacin XML, las producciones de esta especificacin
corresponden en todos los casos a un subconjunto de las cadenas emparejadas por las producciones correspondientes
de la especificacin XML.
En las producciones de este documento, el cdigo REN es una Restriccin sobre el Espacio de Nombres, una de las
reglas que deben seguir los documentos conformes con esta especificacin.
Obsrvese que todos los nombres de dominio de Internet usados en los ejemplos, con la excepcin de w3.org, se han
elegido aleatoriamente y no debera drseles mayor importancia.
[Definicin: El valor de atributo, una referencia URI, es el nombre del espacio de nombres que identifica al espacio
de nombres.] El nombre del espacio de nombres, para servir a la finalidad deseada, debera tener las caractersticas de
unicidad y persistencia. El objetivo no es que sea directamente usable para la obtencin de un esquema (si es que
existe). Un ejemplo de una sintaxis diseada con estos fines en mente es la de los Nombres Uniformes de Recursos
[RFC2141]. Sin embargo, debera tenerse en cuenta que los URLs ordinarios pueden utilizarse de modo tal que se
alcancen estos mismos objetivos.
[Definicin: Si el nombre de atributo concuerda con PrefixedAttName, entonces el NCName da el prefijo del espacio
de nombres, usado para asociar nombres de elementos y atributos con el nombre del espacio de nombres dado por el
valor del atributo en el mbito del elemento al cual est ligada la declaracin.] En tales declaraciones, el nombre del
espacio de nombres no puede estar vaco.
[Definicin: Si el nombre del atributo concuerda con DefaultAttName, entonces el nombre del espacio de nombres dado
por el valor del atributo es aqul del espacio de nombres por defecto en el mbito del elemento al cual est ligada la
declaracin.] En tal declaracin por defecto, el valor del atributo puede estar vaco. En 5 Aplicacin de Espacios de
Nombres a Elementos y Atributos se habla de los espacios de nombres por defecto y de la anulacin de
declaraciones.
Un ejemplo de declaracin de espacio de nombres, que asocia el prefijo de espacio de nombres edi con el nombre de
espacio de nombres http://ecommerce.org/schema:
<x xmlns:edi='http://ecommerce.org/schema'>
<!-- el prefijo "edi" est ligado a http://ecommerce.org/schema
para el elemento "x" y sus contenidos -->
</x>
3 Nombres Cualificados
[Definicin: En los documentos XML conformes con esta especificacin, algunos nombres (construcciones
correspondientes al smbolo no terminal Name) pueden estar dados como nombres cualificados, segn se define a
continuacin:]
Nombre Cualificado
[6] QName ::= (Prefix ':')? LocalPart
[7] Prefix ::= NCName
[8] LocalPart ::= NCName
El Prefix (prefijo) proporciona la parte del prefijo del espacio de nombres del nombre cualificado, y debe estar asociado
mediante una referencia URI a un espacio de nombres en una declaracin de espacio de nombres. [Definicin:
LocalPart proporciona la parte local del nombre cualificado.]
Obsrvese que el prefijo acta nicamente como sustituto del nombre del espacio de nombres. Las aplicaciones
deberan usar el nombre del espacio de nombres, y no el prefijo, al construir nombres cuyo mbito de aplicacin vaya
ms all del documento que lo contiene.
Tipos de Elemento
[9] STag ::= '<' QName (S Attribute)* S? '>' [ REN: Prefijo Declarado ]
[10] ETag ::= '</' QName S? '>' [ REN: Prefijo Declarado ]
[11] EmptyElemTag ::= '<' QName (S Attribute)* S? '/>' [ REN: Prefijo Declarado ]
<x xmlns:edi='http://ecommerce.org/schema'>
<!-- el espacio de nombres del elemento 'price' es http://ecommerce.org/schema -->
<edi:price units='Euro'>32.18</edi:price>
</x>
Los atributos, o bien son declaraciones de espacios de nombres, o bien sus nombres se dan como nombres
cualificados:
Atributo
[12] Attribute ::= NSAttName Eq AttValue
| QName Eq AttValue [ REN: Prefijo Declarado ]
<x xmlns:edi='http://ecommerce.org/schema'>
<!-- el espacio de nombres del atributo 'taxClass' es http://ecommerce.org/schema
-->
<lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>
Esta restriccin puede llevar a dificultades operativas en aquellos casos en que el atributo de declaracin del espacio
de nombres se proporcione no directamente en la entidad documento XML, sino a travs de un atributo por defecto
declarado en una entidad externa. Estas declaraciones pueden no ser ledas por programas basados en un procesador
XML no validador. Muchas aplicaciones XML, entre ellas presumiblemente algunas sensibles a los espacios de
nombres, no requieren el uso de procesadores validadores. Para el funcionamiento correcto de tales aplicaciones, las
declaraciones de espacios de nombres deben proporcionarse o bien directamente o bien a travs de atributos por
defecto declarados en el subconjunto interno del DTD.
Los nombres de elemento y los tipos de atributo tambin se dan como nombres cualificados cuando aparecen en la
declaraciones del DTD:
Se considera que la declaracin del espacio de nombres se aplica al elemento en que est especificada y a todos los
elementos pertenecientes al contenido de ese elemento, a menos que sea anulada por otra declaracin de espacio de
nombres con la misma parte NSAttName:
<?xml version="1.0"?>
<!-- todos estos elementos estn explcitamente en el espacio de nombres HTML -->
<html:html xmlns:html='http://www.w3.org/TR/REC-html40'>
<html:head><html:title>Frobnosticacin</html:title></html:head>
<html:body><html:p>Movido
<html:a href='http://frob.com'>aqu.</html:a></html:p></html:body>
</html:html>
Se pueden declarar varios prefijos de espacios de nombres como atributos de un mismo elemento, como se muestra
en este ejemplo:
<?xml version="1.0"?>
<!-- ambos prefijos de espacios de nombres estn disponibles en todas partes -->
<bk:book xmlns:bk='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<bk:title>Cheaper by the Dozen</bk:title>
<isbn:number>1568491379</isbn:number>
</bk:book>
Se considera que se aplica un espacio de nombres por defecto al elemento en que est declarado (si ese elemento no
tiene prefijo de espacio de nombres), y a todos los elementos sin prefijo pertenecientes al contenido de ese elemento.
Si la referencia URI de la declaracin de un espacio de nombres por defecto est vaca, entonces se considera que los
elementos sin prefijo pertenecientes al mbito de la declaracin no estn en ningn espacio de nombres. Obsrvese
que los espacios de nombres por defecto no se aplican directamente a atributos.
<?xml version="1.0"?>
<!-- estos elementos estn en el espacio de nombre HTML, en este caso por defecto -->
<html xmlns='http://www.w3.org/TR/REC-html40'>
<head><title>Frobnosticacin</title></head>
<body><p>Movido
<a href='http://frob.com'>aqu</a>.</p></body>
</html>
<?xml version="1.0"?>
<!-- los tipos de elemento sin prefijo son de "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
</book>
<?xml version="1.0"?>
<!-- inicialmente, el espacio de nombres por defecto es "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
<notes>
<!-- hacemos a HTML el espacio de nombres por defecto para algunos comentarios
-->
<p xmlns='urn:w3-org-ns:HTML'>
Este es un libro <i>muy</i> divertido!
</p>
</notes>
</book>
El espacio de nombres por defecto puede especificarse como la cadena vaca. Esto tiene el mismo efecto, dentro del
mbito de la declaracin, que si no hubiera espacio de nombres por defecto.
<?xml version='1.0'?>
<Beers>
<!-- el espacio de nombres por defecto es ahora el de HTML -->
<table xmlns='http://www.w3.org/TR/REC-html40'>
<th><td>Name</td><td>Origin</td><td>Description</td></th>
<tr>
<!-- dentro de las celdas de la tabla no hay espacio de nombres por defecto -->
<td><brandName xmlns="">Huntsman</brandName></td>
<td><origin xmlns="">Bath, UK</origin></td>
<td>
<details xmlns=""><class>Bitter</class><hop>Fuggles</hop>
<pro>Wonderful hop, light alcohol, good summer beer</pro>
<con>Fragile; excessive variance pub to pub</con>
</details>
</td>
</tr>
</table>
</Beers>
En documentos XML conformes con esta especificacin, ninguna etiqueta puede contener dos atributos que:
Por ejemplo, cada una de las etiquetas iniciales mal que siguen es ilegal:
Sin embargo, las siguientes son legales, la segunda porque el espacio de nombres por defecto no se aplica a los
nombres de atributos:
6 Conformidad de Documentos
En documentos XML conformes con esta especificacin, los nombres de atributos y tipos de elemento deben concordar
con la produccin dada para QName y deben satisfacer las "Restricciones sobre los Espacios de Nombres".
Un documento XML es conforme con esta especificacin si todos los dems smbolos que, por conformidad con XML,
deben concordar con la produccin XML para Name, concuerdan tambin con la produccin de esta especificacin
para NCName.
Todos los nombres de atributos y tipos de elemento contienen o cero o un smbolo de dos puntos (:).
Ningn nombre de entidad, destinos PI, o nombre de notacin contiene ningn smbolo de dos puntos (:).
Estrictamente hablando, los valores de atributos declarados como de tipo ID, IDREF(S), ENTITY(IES), y NOTATION
son tambin Names, y por tanto no deberan tener smbolos de dos puntos. Sin embargo, el tipo declarado de los
valores de atributos slo est disponible para los procesadores que lean declaraciones de cdigos de formato
(markup), por ejemplo procesadores validadores. As, a menos que se haya especificado el uso de un procesador
validador, no puede asegurarse se haya comprobado la conformidad con esta especificacin de los contenidos de los
valores de los atributos.
<section><title>Book-Signing Event</title>
<signing>
<author title="Mr" name="Vikram Seth" />
<book title="A Suitable Boy" price="$22.95" /></signing>
<signing>
<author title="Dr" name="Oliver Sacks" />
<book title="The Island of the Color-Blind" price="$12.95" /></signing>
</section>
En este ejemplo aparece tres veces el nombre title dentro del cdigo, y solamente el nombre proporciona
informacin insuficiente como para permitir su correcto procesamiento por un mdulo de software.
Otra rea problemtica se deriva del uso de atributos "globales", como se ilustra en este ejemplo de un fragmento de
documento XML que se va a representar usando una hoja de estilo CSS:
<RESERVATION>
<NAME HTML:CLASS="largeSansSerif">Layman, A</NAME>
<SEAT CLASS="Y" HTML:CLASS="reallyImportant">33B</SEAT>
<DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION>
En este caso, el atributo CLASS, que indica la clase del billete y toma valores como "J", "Y", y "C", es diferente en todos
los niveles semnticos del atributo HTML:CLASS, que se usa para simular riqueza sintctica en HTML, con la finalidad
de superar el limitado repertorio de elementos por medio de subclases.
XML 1.0 no integra ningn mtodo para declarar atributos "globales"; objetos tales como el atributo HTML CLASS son
globales slo en su descripcin literaria y en su interpretacin por las aplicaciones HTML. Sin embargo, se observa que
estos atributos, una de cuyas caractersticas distintivas es que sus nombres son nicos, aparecen frecuentemente en
diversas aplicaciones.
Para mantener el objetivo de que tanto los nombres cualificados como los no cualificados sean tiles para su propsito,
identificamos los nombres que aparecen en un espacio de nombres XML segn su pertenencia a uno o varios espacios
de nombres tradicionales (es decir, con estructura de conjunto) disjuntos, llamados particiones del espacio de nombres.
Las particiones son:
En esta particin aparecen todos los tipos de elemento de un espacio de nombres XML. Cada uno tiene una
parte local nica; la combinacin del nombre del espacio de nombres y de la parte local identifica unvocamente
al tipo de elemento.
Esta particin contiene los nombres de todos los atributos que se han definido en este espacio de nombres como
globales. La nica caracterstica exigida a un atributo global es que su nombre sea nico en la particin de
atributos globales. Esta especificacin no dice nada sobre la utilizacin apropiada de estos atributos. La
combinacin del nombre del espacio de nombres y del nombre del atributo identifica unvocamente al atributo
global.
Cada tipo de elemento de la Particin de Todos los Tipos de Elemento tiene un espacio de nombres asociado en
que aparecen los nombres de los atributos no cualificados que se proporcionan para ese elemento. Esto es un
espacio de nombres tradicional porque la aparicin de nombres de atributo duplicados est prohibida por XML
1.0. La combinacin del nombre del atributo con el tipo del elemento y el nombre del espacio de nombres
identifica unvocamente a cada atributo no cualificado.
En documentos XML conformes con esta especificacin, los nombres de todos los atributos cualificados (prefijados) se
asignan a la particin de atributos globales, y los nombres de todos los atributos no cualificados se asignan a la
particin por tipo de elemento apropiada.
Para especificar reglas y hacer comparaciones de manera conveniente, definimos, para cada tipo de elemento y
nombre de atributo de un documento XML, una forma expandida, expresada aqu con la sintaxis de elementos de XML.
[Definicin: Un tipo de elemento expandido se expresa como un elemento XML vaco de tipo ExpEType. Tiene un
atributo type obligatorio que da la parte local (LocalPart) del tipo, y un atributo opcional ns que da, si el elemento est
cualificado, el nombre de su espacio de nombres.]
[Definicin: Un nombre de atributo expandido se expresa como un elemento XML vaco del tipo ExpAName. Tiene un
atributo obligatorio name que da el nombre. Si el atributo es global, tiene un atributo obligatorio ns que da el nombre
del espacio de nombres; en caso contrario, tiene un atributo obligatorio eltype que da el tipo del elemento al que est
ligado, y un atributo opcional elns que da, si es que se conoce, el nombre del espacio del espacio de nombres de
dicho elemento.]
Unas pequeas variaciones de los ejemplos anteriores ilustrarn el funcionamiento de los tipos de elementos y
nombres de atributos expandidos. Cada uno de los siguientes fragmentos est seguido de una tabla que muestra la
expansin de los nombres:
La restriccin expresada arriba por 5.3 Unicidad de Atributos puede implementarse directamente obligando a que
ningn elemento tenga dos atributos cuyos nombres expandidos sean equivalentes, es decir, que tengan los mismos
pares atributo-valor.
AVISO DE COPYRIGHT
Copyright 1994-2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National
de Recherche en Informatique et en Automatique, Keio University). Todos los derechos reservados. http://www.
w3.org/Consortium/Legal/
Los titulares del copyright proporcionan los documentos pblicos que se encuentran en el sitio web del W3C de
acuerdo con la siguiente Licencia. El software y las Definiciones de Tipo de Documento (Document Type
Definitions, DTDs) asociadas con las especificaciones del W3C estn gobernados por el aviso de copyright de
Software.
Por el uso y/o la copia de este documento, usted (el beneficiario de la Licencia del copyright) est de acuerdo en
que ha ledo, entendido y que respetar los siguientes trminos y condiciones:
Se concede permiso para usar, copiar y distribuir los contenidos de este documento en cualquier medio y para
cualquier propsito sin necesidad del pago de fianzas ni royalties, siempre y cuando se incluya la siguiente
informacin en TODAS las copias de este documento, o partes del mismo, que usted utilice:
Cuando el espacio lo permita, debera incluirse una copia del texto completo de esta NOTICIA. Le instamos a
que mencione a los autores en cualquier programa, documento, u otro artculo o producto que usted cree como
consecuencia de la implementacin de los contenidos de este documento o de cualquier parte del mismo.
Esta licencia no concede permiso para crear modificaciones o documentos derivados de documentos del W3C.
Sin embargo, caso de satisfacerse adicionales (documentados en el Copyright FAQ), el W3C puede conceder
permiso para crear modificaciones o documentos derivados a los individuos que satisfagan dichos requisitos.
ESTE DOCUMENTO SE OFRECE "TAL COMO ESTA". LOS PROPIETARIOS DEL COPYRIGHT NO HACEN
GARANTIAS NI REPRESENTACIONES DE NINGUN TIPO, EXPRESAS O IMPLICITAS, INCLUYENDO,
AUNQUE SIN LIMITARSE A, LAS GARANTIAS DE COMERCIALIZACION, ADECUACION A UN PROPOSITO
ESPECIFICO, O TITULO; QUE LOS CONTENIDOS DEL DOCUMENTO SEAN APROPIADOS PARA
CUALQUIER PROPOSITO; NI QUE LA IMPLEMENTACION DE TALES CONTENIDOS NO INFRINGIRA LAS
PATENTES, DERECHOS DE AUTOR, MARCAS REGISTRADAS O COMERCIALES U OTROS DERECHOS
DE TERCERAS PERSONAS.
LOS PROPIETARIOS DEL COPYRIGHT NO SERAN RESPONSABLES DE NINGUN DAO DIRECTO,
INDIRECTO, ESPECIAL O CONSECUENTE DEBIDO A CUALQUIER USO DEL DOCUMENTO O DEL
FUNCIONAMIENTO O IMPLEMENTACION DE LOS CONTENIDOS DEL MISMO.
El nombre y marcas registradas de los propietarios del copyright NO pueden utilizarse en anuncios o publicidad
relativos a este documento o a sus contenidos sin un permiso previo por escrito. Los derechos de autor de este
documento pertenecern en todo momento a los propietarios del copyright.