De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar

Los espacios de nombres XML se utilizan para proporcionar elementos y atributos con nombres exclusivos 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 simple sería considerar una instancia XML que contuviera referencias a un cliente y un producto pedido. Tanto el elemento del cliente como el elemento del producto podrían tener un elemento hijo llamado id . Por tanto, las referencias al elemento id serían ambiguas; colocarlos en diferentes espacios de nombres 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 dado describe un recurso bajo el control del autor u 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; simplemente, un analizador XML lo trata como una cadena. Por ejemplo, el documento en http://www.w3.org/1999/xhtml en sí mismo no contiene ningún código. Simplemente describe el XHTMLespacio de nombres para 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 W3C se refiere a él como el nombre del espacio de nombres . La especificación no es del todo prescriptiva sobre las reglas precisas para los nombres de espacios de nombres (no dice explícitamente que los analizadores deban 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 de recursos internacionalizado , 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 solo en el uso popular, sino también en muchas otras especificaciones del W3C y en otros lugares.

Después de la publicación de la recomendación de espacios de nombres, hubo un intenso debate sobre cómo se debe manejar un URI relativo, con algunos argumentando intensamente que simplemente debe tratarse como una cadena de caracteres, y otros argumentando con convicción que debe 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 estaban en desuso. [4]

El uso de URI en 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 espacios de nombres no dice qué debería suceder si se elimina la referencia a dicha URL (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] Sin embargo, en general, 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 antepasado 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 antepasado 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, 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. Se considera que un atributo sin un prefijo de espacio de nombres explícito no está en ningún espacio de nombres.

Espacios de nombres en API y modelos de objetos XML

Diferentes 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 el URI del espacio de nombres. Las aplicaciones deben evitar atribuir 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 espacio 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 atributo denominados "xmlns" o "xmlns: xxx", exactamente como se escriben los espacios de nombres en el documento XML de origen. 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 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 .

Ver 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 estándares XML y Web semántica W3C" (PDF) .
  3. ^ Dodds, Leigh (24 de mayo de 2000). "Noticias de las trincheras" . O'Reilly Media, Inc.
  4. ^ Connolly, Dan (11 de septiembre de 2000), decisión del Plenario de XML del W3C sobre referencias de URI relativas en declaraciones de espacio de nombres
  5. ^ Harold, Elliotte Rusty (20 de febrero de 2001). "RDDL Me This: ¿Qué localiza una URL de espacio de nombres?" . 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 .

Enlaces externos