Articulo de referencia

Espacio de nombres XML

Los espacios de nombres XML se utilizan para proporcionar elementos y atributos con nombres únicos en un documento XML . Están definidos en una recomendación del W3C . [ 1 ] [ 2...

Los espacios de nombres XML se utilizan para proporcionar elementos y atributos con nombres únicos en un documento XML . Están definidos 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 a cada vocabulario se le asigna un espacio de nombres , 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 hijo llamado id . Por lo tanto, las referencias al elemento id serían ambiguas; colocarlos en espacios de nombres diferentes 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 la URL del servidor web del autor. Sin embargo, la especificación del espacio de nombres no exige ni sugiere que se utilice el URI del espacio de nombres para recuperar información; simplemente se trata como una cadena de texto por un analizador XML. Por ejemplo, el documento en http://www.w3.org/1999/xhtml no contiene ningún código. Simplemente describe el espacio de nombres XHTML a los lectores. Utilizar un URI (como "http://www.w3.org/1999/xhtml" ) para identificar un espacio de nombres, en lugar de una simple cadena de texto (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 lo denomina nombre de espacio de nombres . La especificación no es del todo prescriptiva en cuanto a las reglas precisas para los nombres de espacio de nombres (no indica explícitamente que los analizadores deban rechazar los documentos donde el nombre de espacio de nombres no sea un Identificador Uniforme de Recursos válido ), y muchos analizadores XML permiten el uso de cualquier cadena de caracteres. En la versión 1.1 de la recomendación, el nombre de 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. Sin embargo, el término URI de espacio de nombres persiste, no solo en el uso popular, sino también en muchas otras especificaciones del W3C y de otras fuentes.

Tras la publicación de la recomendación sobre espacios de nombres, se produjo un intenso debate sobre cómo gestionar las URI relativas. Algunos defendían con vehemencia que debían tratarse simplemente como una cadena de caracteres, mientras que otros argumentaban con convicción que debían convertirse en URI absolutas resolviéndolas con respecto a la URI base del documento. [ 3 ] El resultado del debate fue una resolución del W3C que declaraba obsoletas las URI relativas. [ 4 ]

El uso de URI con forma de URL en el esquema http (como http://www.w3.org/1999/xhtml ) es común, a pesar de la ausencia de una relación formal con el protocolo HTTP. La especificación de Namespaces no indica qué sucede si se desreferencia una URL de este tipo (es decir, si un software intenta recuperar un documento desde esa ubicación). Una convención adoptada por algunos usuarios es colocar un documento RDDL en dicha ubicación. [ 5 ] Sin embargo, en general, los usuarios deben asumir que la 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 pertenece al espacio de nombres XHTML, si este 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 mismo o un antecesor tiene la declaración de espacio de nombres predeterminada mencionada anteriormente.

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

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

Espacios de nombres en API y modelos de objetos XML

Las distintas especificaciones han adoptado diferentes enfoques 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 la URI del espacio de nombres. Las aplicaciones no deben atribuirle mayor importancia a la elección del prefijo, pero esta información se proporciona porque puede resultar útil para los usuarios. Se considera que dos nombres son iguales si la 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 dado. Esta información es necesaria porque algunos vocabularios XML permiten que los nombres calificados (que contienen prefijos de espacio de nombres) aparezcan en el contenido de los elementos o atributos, así como en sus nombres. Hay tres formas principales en que se puede proporcionar esta información:

  • Como nodos de atributo llamados "xmlns" o "xmlns:xxx", exactamente como están escritos los espacios de nombres en el documento XML fuente. Este es el modelo presentado por DOM .
  • Como declaraciones de espacio 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 espacio de nombres dentro del ámbito: en este modelo, la aplicación puede determinar qué espacios de nombres están dentro del ámbito para 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). "Espacios de nombres en 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) . Archivado del original (PDF) el 29/12/2022 . Consultado el 02/04/2022 .
  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 del W3C XML sobre referencias URI relativas en declaraciones de espacios de nombres
  5. Harold, Elliotte Rusty (20 de febrero de 2001). "RDDL Me This: ¿Qué localiza una URL de espacio de nombres?" . Archivado del 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 (Red de desarrolladores de Mozilla)