Espacios de Nombres
Documentaci´on Electr´onica
Contenido
Introducci´on
Declarar un espacio de nombres Nombres cualificados
Formas de declarar un espacio de nombres Alcance de los espacios de nombres Atributos ´unicos
Motivaci´
on
XML es un est´andar dise˜nado para permitir que se comparta informaci´on con facilidad
¿Qu´e pasar´ıa si uni´esemos informaci´on en XML procedente de dos fuentes diferentes para enviarla a una tercera? ¿Qu´e ocurre si se quieren combinar diferentes vocabularios (gram´aticas)?
I Si no tienen elementos con el mismo nombre no hay problema I Si tienen elementos con el mismo nombre se producir´an
colisiones
El concepto deEspacios de nombres o Namespacessurge de la posibilidad de combinar diferentes vocabularios XML evitando colisiones entre los nombres de los vocabularios
Motivaci´
on
Ejemplo: supongamos un documento XML con libros y otro con discos y queremos mezclar ambos
I Habr´a elementos con nombre diferente (p´aginas o tiempo) I Habr´a elementos con el mismo nombre (t´ıtulo o autor) Soluci´on: hacer uso de ambos Esquemas y utilizar espacios de nombres para distinguir aquellos elementos que no est´e claro a qu´e Esquema pertenecen
Concepto
Los espacios de nombres XML proporcionan un m´etodo simple para calificar nombres de elementos y atributos
No forma parte de la especificaci´on XML 1.0 original. Es una iniciativa de W3C
http://www.w3.org/TR/REC-xml-names/
Garant´ıa de singularidad de la asignaci´on de nombres de elementos y atributos XML: uso de URIs (identificador global ´unico)
I Se asocia una URI a cada etiqueta que identifica el espacio de nombres al que pertenece
Contenido
Introducci´on
Declarar un espacio de nombres
Nombres cualificados
Formas de declarar un espacio de nombres Alcance de los espacios de nombres Atributos ´unicos
Sintaxis
Para definir un espacio de nombres al que pertenece un elemento se a˜nade el atributo xmlns (“xml namespace”) a la definici´on de elemento:
xmlns:prefijo="namespace"
El valor del atributo puede ser una cadena cualquiera aunque por convenci´on suele ser una URI
Sintaxis
Es la URI la que define el espacio de nombres y no el prefijo I Diferentes documentos XML pueden tener distintos prefijos
que se refieren al mismo espacio de nombres
Elprefijo es opcional. Sirve de referencia del espacio de nombres a lo largo del alcance del elemento en el que se declara
Contenido
Introducci´on
Declarar un espacio de nombres
Nombres cualificados
Formas de declarar un espacio de nombres Alcance de los espacios de nombres Atributos ´unicos
Concepto
Son aquellos que llevan un prefijo
prefijo:parte local del nombre
Ejemplos:
pelicula:titulo, pelicula:director
El prefijo debe estar asociado mediante una referencia URI a un espacio de nombres en una declaraci´on de espacio de nombres El prefijo act´ua ´unicamente como sustituto del nombre del espacio de nombres
Utilizaci´
on con nombres cualificados
Ejemplo de nombre cualificado que funciona como tipo de elemento:
<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>
Ejemplo de nombre cualificado que act´ua como nombre de atributo:
<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>
Contenido
Introducci´on
Declarar un espacio de nombres Nombres cualificados
Formas de declarar un espacio de nombres
Alcance de los espacios de nombres Atributos ´unicos
Hay dos maneras de definir un espacio de nombres:
I Declaraci´on predeterminada (Espacio de nombres por defecto) I El espacio de nombres se declara sin un prefijo
I Se usan nombres no cualificados de elementos y atributos (se
supone que est´an en el espacio de nombres)
I Declaraci´on expl´ıcita
I El espacio de nombres se declara con un prefijo
Declaraci´
on predeterminada
Ejemplo:
<!ELEMENT title (%inline;)*> <!ATTLIST title
xmlns CDATA #FIXED "http://www.ejemplos.xml/slideshow" >
Referencia a un espacio de nombres:
<title xmlns="http://www.ejemplos.com/ejemplo1"> Ejemplo de espacio de nombres
Declaraci´
on expl´ıcita
Ejemplo:
<libro xmlns:lib="http://www.ejemplos.com/ejemplo1"> </libro>
Ejemplo:
<producto xmlns="http://osmosislatina.com/definiciones/producto" xmlns:dist="http://osmosislatina.com/definiciones/distribuidores"> <nombre modelo="xdfsdf">
<disponibilidad lugar="almacen"> Si </disponibilidad> <descripcion> 60 Watts Doble Canal </descripcion> </nombre>
<dist:empresa> <dist:serie>5845-2543-8614</dist:serie> <dist:nombre>Sonido Real</dist:nombre>
</dist:empresa> </producto>
Contenido
Introducci´on
Declarar un espacio de nombres Nombres cualificados
Formas de declarar un espacio de nombres
Alcance de los espacios de nombres
´
Ambito
La declaraci´on del espacio de nombres se aplica al elemento en que est´a especificada y a todos los elementos pertenecientes al
contenido de ese elemento, a menos que sea anulada por otra declaraci´on de espacio de nombres con el mismo prefijo
<?xml version="1.0"?>
<!-- todos los elementos est´an en el espacio de nombres HTML --> <html:html xmlns:html=’http://www.w3.org/TR/REC-html40’>
<html:head><html:title>Frobnosticaci´on</html:title></html:head> <html:body>
<html:p>Movido
<html:a href=’http://frob.com’>aqu´ı.</html:a> </html:p>
</html:body> </html:html>
Espacio de nombres por defecto
Se aplica un espacio de nombres por defecto al elemento en que est´a 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 declaraci´on de un espacio de nombres por defecto est´a vac´ıa, entonces se considera que los elementos sin prefijo pertenecientes al ´ambito de la declaraci´on no est´an en ning´un espacio de nombres
Espacio de nombres por defecto
Ejemplo:<?xml version="1.0"?>
<!-- inicialmente, el espacio de nombres por defecto es "books" --> <!-- 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> <notes>
<!-- HTML ser´a 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>
Contenido
Introducci´on
Declarar un espacio de nombres Nombres cualificados
Formas de declarar un espacio de nombres Alcance de los espacios de nombres
En documentos XML ninguna etiqueta puede contener dos atributos que: tengan nombres id´enticos o que tengan nombres cualificados con la misma parte local y con prefijos que hayan sido ligados a nombres de espacios de nombres que sean id´enticos.
<!-- http://www.w3.org est´a ligado a n1 y n2 -->
<x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org" > <mal a="1" a="2" />
<mal n1:a="1" n2:a="2" /> </x>
<!-- http://www.w3.org est´a ligado a n1 y --> <-- es el valor por defecto -->
<x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <bien a="1" b="2" /> <bien a="1" n1:a="2" /> </x>