Espacio de nombres XML

Método para proporcionar elementos y atributos únicos en un documento XML

Los espacios de nombres XML se utilizan para proporcionar elementos y atributos con nombres únicos en un documento XML . Se definen en una recomendación del W3C . [1] [2] Una instancia XML puede contener nombres de elementos o atributos de más de un vocabulario XML. Si se asigna un espacio de nombres a cada vocabulario , se puede resolver la ambigüedad entre elementos o atributos con nombres idénticos.

Un ejemplo sencillo sería considerar una instancia XML que contuviera referencias a un cliente y a un producto pedido. Tanto el elemento cliente como el elemento producto podrían tener un elemento secundario llamado id . Por lo tanto, las referencias al elemento id serían ambiguas; si se las colocara en espacios de nombres diferentes, se eliminaría la ambigüedad.

Nombres de espacios de nombres

Un nombre de espacio de nombres es un identificador uniforme de recursos (URI). Normalmente, el URI elegido para el espacio de nombres de un vocabulario XML determinado describe un recurso bajo el control del autor o la organización que define el vocabulario, como una URL para el servidor Web del autor. Sin embargo, la especificación del espacio de nombres no requiere ni sugiere que el URI del espacio de nombres se utilice para recuperar información; un analizador XML simplemente lo trata como una cadena. Por ejemplo, el documento http://www.w3.org/1999/xhtml en sí no contiene ningún código. Simplemente describe el espacio de nombres XHTML a los lectores humanos. El uso de un URI (como "http://www.w3.org/1999/xhtml") para identificar un espacio de nombres, en lugar de una cadena simple (como "xhtml"), reduce la probabilidad de que diferentes espacios de nombres utilicen identificadores duplicados.

Aunque el término URI de espacio de nombres está muy extendido, la Recomendación del W3C se refiere a él como el nombre del espacio de nombres . La especificación no es completamente prescriptiva sobre las reglas precisas para los nombres de espacios de nombres (no dice explícitamente que los analizadores deben rechazar documentos donde el nombre del espacio de nombres no es un Identificador Uniforme de Recursos válido ), y muchos analizadores XML permiten que se utilice cualquier cadena de caracteres. En la versión 1.1 de la recomendación, el nombre del espacio de nombres se convierte en un Identificador Internacionalizado de Recursos , que autoriza el uso de caracteres no ASCII que en la práctica ya eran aceptados por casi todo el software XML. El término URI de espacio de nombres persiste, sin embargo, no sólo en el uso popular, sino también en muchas otras especificaciones del W3C y de otros lugares.

Tras la publicación de la recomendación de Namespaces, se desató un intenso debate sobre cómo debería manejarse un URI relativo; algunos argumentaron intensamente que debería tratarse simplemente como una cadena de caracteres, y otros argumentaron con convicción que debería convertirse en un URI absoluto resolviéndolo contra el URI base del documento. [3] El resultado del debate fue una decisión del W3C de que los URI relativos quedaban obsoletos. [4]

El uso de URIs que toman la forma de URLs en el esquema http (como http://www.w3.org/1999/xhtml ) es común, a pesar de la ausencia de cualquier relación formal con el protocolo HTTP. La especificación de Namespaces no dice qué debería suceder si se desreferencia una URL de este tipo (es decir, si el software intenta recuperar un documento de esta ubicación). Una convención adoptada por algunos usuarios es colocar un documento RDDL en la ubicación. [5] En general, sin embargo, los usuarios deben asumir que el URI del espacio de nombres es simplemente un nombre, no la dirección de un documento en la Web.

Declaración de espacio de nombres

Un espacio de nombres XML se declara utilizando el atributo XML reservado xmlnso , cuyo valor debe ser un nombre de espacio de nombres válido.xmlns:prefix

Por ejemplo, la siguiente declaración asigna el prefijo "xhtml:" al espacio de nombres XHTML:

xmlns:xhtml="http://www.w3.org/1999/xhtml"

Cualquier elemento o atributo cuyo nombre comience con el prefijo "xhtml:" se considera que está en el espacio de nombres XHTML, si él o un antecesor tiene la declaración de espacio de nombres anterior.

También es posible declarar un espacio de nombres predeterminado. Por ejemplo:

xmlns="http://www.w3.org/1999/xhtml"

En este caso, cualquier elemento sin un prefijo de espacio de nombres se considera que está en el espacio de nombres XHTML, si él o un antecesor tiene la declaración de espacio de nombres predeterminada anterior.

Si no hay una declaración de espacio de nombres predeterminada en el alcance, el nombre del espacio de nombres no tiene valor. [6] En ese caso, se considera que un elemento sin un prefijo de espacio de nombres explícito no está en ningún espacio de nombres.

Los atributos nunca están sujetos al espacio de nombres predeterminado. Se considera que un atributo sin un prefijo de espacio de nombres explícito no pertenece a ningún espacio de nombres.

Espacios de nombres en API y modelos de objetos XML

Diferentes especificaciones han adoptado enfoques diferentes sobre cómo se presenta la información del espacio de nombres a las aplicaciones.

Casi todos los modelos de programación permiten recuperar el nombre de un elemento o nodo de atributo como un nombre de tres partes: el nombre local, el prefijo del espacio de nombres y el URI del espacio de nombres. Las aplicaciones deben evitar dar importancia a la elección del prefijo, pero la información se proporciona porque puede ser útil para los lectores humanos. Los nombres se consideran iguales si el URI del espacio de nombres y el nombre local coinciden.

Además, la mayoría de los modelos proporcionan alguna forma de determinar qué espacios de nombres se han declarado para un elemento determinado. Esta información es necesaria porque algunos vocabularios XML permiten que aparezcan nombres calificados (que contienen prefijos de espacios de nombres) en el contenido de elementos o atributos, así como en sus nombres. Hay tres formas principales de proporcionar esta información:

  • Como nodos de atributos denominados "xmlns" o "xmlns:xxx", exactamente como están escritos los espacios de nombres en el documento XML de origen. Este es el modelo que presenta DOM .
  • Como declaraciones de espacios de nombres: se distinguen de los atributos, pero se corresponden uno a uno con los atributos relevantes en el documento XML de origen. Este es el modelo presentado por JDOM .
  • Como enlaces de espacios de nombres dentro del alcance: en este modelo, la aplicación puede determinar qué espacios de nombres están dentro del alcance de cualquier elemento dado, pero no puede determinar qué elementos contienen las declaraciones reales. Este es el modelo utilizado en XPath , XSLT y XQuery .

Véase también

Referencias

  1. ^ Bray, Tim; Dave Hollander; Andrew Layman; Richard Tobin; Henry S. Thompson (diciembre de 2009). «Namespaces in XML 1.0». W3C . Consultado el 9 de octubre de 2010 .
  2. ^ "Cronología de los estándares XML y Web semántica del W3C (v.1.2)" (PDF) .
  3. ^ Dodds, Leigh (24 de mayo de 2000). "Noticias desde las trincheras". O'Reilly Media, Inc.
  4. ^ Connolly, Dan (11 de septiembre de 2000), Decisión plenaria de XML del W3C sobre referencias URI relativas en declaraciones de espacios de nombres
  5. ^ Harold, Elliotte Rusty (20 de febrero de 2001). "RDDL Me This: What Does a Namespace URL Locate?". Archivado desde el original el 7 de mayo de 2017.
  6. ^ "Espacios de nombres en XML 1.0 (tercera edición)". W3C . Consultado el 28 de abril de 2017 .
  • Espacios de nombres en XML 1.0 (tercera edición)
  • Espacios de nombres en XML 1.1 (segunda edición)
  • Curso intensivo sobre espacios de nombres (Mozilla Developer Network)
Obtenido de "https://es.wikipedia.org/w/index.php?title=Espacio_de_nombres_XML&oldid=1218316095"