stringtranslate.com

Identificador uniforme de recursos

Un Identificador uniforme de recursos ( URI ) es una secuencia única de caracteres que identifica un recurso abstracto o físico, [1] como recursos en una página web, dirección de correo, número de teléfono, [2] libros, objetos del mundo real como personas y Lugares, conceptos. [3] Los URI se utilizan para identificar cualquier cosa descrita utilizando el Marco de descripción de recursos (RDF), por ejemplo, conceptos que forman parte de una ontología definida utilizando el lenguaje de ontología web (OWL) y personas que se describen utilizando el Amigo de un amigo. El vocabulario tendría cada uno un URI individual.

Los URI que proporcionan un medio para localizar y recuperar recursos de información en una red (ya sea en Internet o en otra red privada, como un sistema de archivos informático o una Intranet ) son localizadores uniformes de recursos ( URL ). Con esto, la URL se refiere al subconjunto de URI. [2] Otros URI proporcionan sólo un nombre único, sin un medio para localizar o recuperar el recurso o información sobre él; estos son nombres uniformes de recursos (URN). Las tecnologías web que utilizan URI no se limitan a los navegadores web.

Historia

Concepción

Los URI y las URL tienen un historial compartido. En 1990, las propuestas de Tim Berners-Lee para el hipertexto introdujeron implícitamente la idea de una URL como una cadena corta que representa un recurso que es el destino de un hipervínculo . [4] En ese momento, la gente se refería a él como "nombre de hipertexto" [5] o "nombre de documento".

Durante los siguientes tres años y medio, a medida que se desarrollaron las tecnologías centrales de HTML, HTTP y navegadores web de la World Wide Web, surgió la necesidad de distinguir una cadena que proporcionaba una dirección para un recurso de una cadena que simplemente nombraba un recurso. Aunque aún no está definido formalmente, el término Localizador Uniforme de Recursos pasó a representar el primero, y el Nombre Uniforme de Recursos, más polémico , pasó a representar el segundo. En julio de 1992, el informe de Berners-Lee sobre el IETF "UDI (Identificadores universales de documentos) BOF " menciona las URL (como localizadores uniformes de recursos), las URN (originalmente, como números únicos de recursos) y la necesidad de constituir un nuevo grupo de trabajo. [6] En noviembre de 1992, el "Grupo de Trabajo URI" del IETF se reunió por primera vez. [7]

Durante el debate sobre la definición de URL y URN, se hizo evidente que los conceptos incorporados por los dos términos eran simplemente aspectos de la noción fundamental y global de identificación de recursos . En junio de 1994, el IETF publicó la primera Solicitud de Comentarios de Berners-Lee que reconocía la existencia de URL y URN. Lo más importante es que definió una sintaxis formal para los identificadores de recursos universales (es decir, cadenas similares a URL cuyas sintaxis y semántica precisas dependían de sus esquemas). Además, el RFC  1630 intentó resumir las sintaxis de los esquemas de URL utilizados en ese momento. Reconoció, pero no estandarizó , la existencia de URL relativas e identificadores de fragmentos. [8]

Refinamiento

En diciembre de 1994, RFC  1738 definió formalmente las URL relativas y absolutas, refinó la sintaxis general de las URL, definió cómo resolver las URL relativas a su forma absoluta y enumeró mejor los esquemas de URL que se utilizaban en ese momento. [9] La definición y sintaxis acordadas de URN tuvo que esperar hasta la publicación del IETF RFC 2141 [10] en mayo de 1997.

La publicación de IETF RFC 2396 [11] en agosto de 1998 hizo que la sintaxis de URI se convirtiera en una especificación separada [12] y la mayoría de las partes de los RFC 1630 y 1738 relacionadas con URI y URL en general fueron revisadas y ampliadas por el IETF . El nuevo RFC cambió el significado de "U" en "URI" a "Uniforme" de "Universal".

En diciembre de 1999, RFC  2732 [13] proporcionó una actualización menor a RFC 2396, permitiendo que los URI acomoden direcciones IPv6 . Una serie de deficiencias descubiertas en las dos especificaciones llevaron a un esfuerzo comunitario, coordinado por el coautor del RFC 2396, Roy Fielding , que culminó con la publicación del IETF RFC 3986 [14] en enero de 2005. Si bien dejó obsoleto el estándar anterior, no lo hizo. dejar obsoletos los detalles de los esquemas de URL existentes; RFC 1738 continúa rigiendo dichos esquemas, excepto donde se reemplace de otra manera. IETF RFC 2616 [15] , por ejemplo, refina el esquema. Simultáneamente, el IETF publicó el contenido de RFC 3986 como el estándar completo STD 66, lo que refleja el establecimiento de la sintaxis genérica URI como protocolo oficial de Internet.http

En 2001, el Grupo de Arquitectura Técnica (TAG) del W3C publicó una guía de mejores prácticas y URI canónicos para publicar múltiples versiones de un recurso determinado. [16] Por ejemplo, el contenido puede diferir según el idioma o el tamaño para ajustarse a la capacidad o la configuración del dispositivo utilizado para acceder a ese contenido.

En agosto de 2002, IETF RFC  3305 [17] señaló que el término "URL", a pesar del uso público generalizado, se había desvanecido hasta casi quedar obsoleto, y sirve sólo como recordatorio de que algunos URI actúan como direcciones al tener esquemas que implican accesibilidad a la red, independientemente de de dicho uso real. Como lo hacen evidente los estándares basados ​​en URI, como el Marco de descripción de recursos , la identificación de recursos no tiene por qué sugerir la recuperación de representaciones de recursos a través de Internet, ni tampoco implica necesariamente recursos basados ​​en la red.

La Web Semántica utiliza el esquema HTTP URI para identificar tanto documentos como conceptos para usos prácticos, una distinción que ha causado confusión sobre cómo distinguirlos. El TAG publicó un correo electrónico en 2005 con una solución al problema, que pasó a conocerse como resolución httpRange-14 . [18] El W3C publicó posteriormente una nota de grupo de interés titulada Cool URIs for the Semantic Web , que explicaba con más detalle el uso de la negociación de contenido y el código de respuesta HTTP 303 para redirecciones. [19]

Diseño

URL y URN

Un nombre uniforme de recurso (URN) es un URI que identifica un recurso por su nombre en un espacio de nombres particular. Se puede utilizar una URN para hablar de un recurso sin implicar su ubicación o cómo acceder a él. Por ejemplo, en el sistema de Número Estándar Internacional de Libros (ISBN), el ISBN 0-486-27557-4 identifica una edición específica de la obra de Shakespeare Romeo y Julieta . La URN para esa edición sería urn:isbn:0-486-27557-4 . Sin embargo, no proporciona información sobre dónde encontrar una copia de ese libro.

Un localizador uniforme de recursos (URL) es un URI que especifica los medios para actuar u obtener la representación de un recurso, es decir, especifica tanto su mecanismo de acceso principal como su ubicación en la red. Por ejemplo, la URL http://example.org/wiki/URI_scheme/Main_Pagese refiere a un recurso identificado como /wiki/URI_scheme/Main_Page, cuya representación se puede obtener a través del Protocolo de transferencia de hipertexto ( http: ) desde un host de red cuyo nombre de dominio es example.org. (En este caso, HTTP generalmente implica que está en forma de HTML y código relacionado. En la práctica, ese no es necesariamente el caso, ya que HTTP permite especificar formatos arbitrarios en su encabezado).

Una URN es análoga al nombre de una persona, mientras que una URL es análoga a su dirección postal. En otras palabras, una URN identifica un elemento y una URL proporciona un método para encontrarlo.

Las publicaciones técnicas, especialmente los estándares producidos por el IETF y el W3C , normalmente reflejan una visión esbozada en una Recomendación del W3C del 30 de julio de 2001, que reconoce la precedencia del término URI en lugar de respaldar cualquier subdivisión formal en URL y URN.

URL es un concepto útil pero informal: una URL es un tipo de URI que identifica un recurso a través de una representación de su mecanismo de acceso principal (por ejemplo, su "ubicación" en la red), en lugar de otros atributos que pueda tener. [20]

Como tal, una URL es simplemente un URI que apunta a un recurso a través de una red. [a] [21] Sin embargo, en contextos no técnicos y en software para la World Wide Web, el término "URL" sigue siendo ampliamente utilizado. Además, el término "dirección web" (que no tiene una definición formal) suele aparecer en publicaciones no técnicas como sinónimo de un URI que utiliza los esquemas http o https . Tales suposiciones pueden generar confusión, por ejemplo, en el caso de espacios de nombres XML que tienen una similitud visual con URI resolubles.

Las especificaciones producidas por WHATWG prefieren URL sobre URI , por lo que las API HTML5 más nuevas usan URL sobre URI . [22]

Estandarizar el término URL. URI e IRI [Identificador de recursos internacionalizado] son ​​simplemente confusos. En la práctica, se utiliza un único algoritmo para ambos, por lo que mantenerlos distintos no ayuda a nadie. La URL también gana fácilmente el concurso de popularidad de los resultados de búsqueda. [23]

Si bien la mayoría de los esquemas de URI se diseñaron originalmente para usarse con un protocolo en particular y, a menudo, tienen el mismo nombre, son semánticamente diferentes de los protocolos. Por ejemplo, el esquema http se usa generalmente para interactuar con recursos web usando HTTP, pero el archivo del esquema no tiene protocolo.

Sintaxis

Un URI tiene un esquema que hace referencia a una especificación para asignar identificadores dentro de ese esquema. Como tal, la sintaxis de URI es un sistema de denominación federado y extensible en el que la especificación de cada esquema puede restringir aún más la sintaxis y la semántica de los identificadores que utilizan ese esquema. La sintaxis genérica de URI es un superconjunto de la sintaxis de todos los esquemas de URI. Se definió por primera vez en RFC  2396, publicado en agosto de 1998, [12] y finalizado en RFC  3986, publicado en enero de 2005. [24]

Un URI se compone de un conjunto permitido de caracteres ASCII que consta de caracteres reservados (gen-delims: :, /, ?, #, [, ]y @; sub-delims: !, $, &, ', (, ), *, +, ,, ;y =), [25] caracteres no reservados ( letras mayúsculas y minúsculas , dígitos decimales , -, ., _y ~), [25] y el carácter %. [26] Los componentes y subcomponentes de sintaxis están separados por delimitadores de los caracteres reservados (solo de los caracteres reservados genéricos para componentes) y definen datos de identificación representados como caracteres no reservados, caracteres reservados que no actúan como delimitadores en el componente y subcomponente respectivamente, [27 ] y codificaciones porcentuales cuando el carácter correspondiente está fuera del conjunto permitido o se utiliza como delimitador del componente o dentro de él. Una codificación porcentual de un octeto de datos de identificación es una secuencia de tres caracteres, que consta del carácter %seguido de dos dígitos hexadecimales que representan el valor numérico de ese octeto. [28]


La sintaxis genérica de URI consta de cinco componentes organizados jerárquicamente en orden de importancia decreciente de izquierda a derecha: [29]

URI = esquema ":" ["//" autoridad] ruta ["?" consulta] [fragmento "#"]

Un componente no está definido si tiene un delimitador asociado y el delimitador no aparece en el URI; los componentes del esquema y la ruta siempre están definidos. [30] Un componente está vacío si no tiene caracteres; el componente del esquema siempre no está vacío. [29]

El componente de autoridad consta de subcomponentes :

autoridad = [información de usuario "@"] host [":" puerto]

Esto se representa en un diagrama de sintaxis como:

diagrama de sintaxis URI

La URI comprende:

Por convención, en los URI http y https , la última parte de una ruta se denominapathinfo y es opcional. Está compuesto por cero o más segmentos de ruta que no se refieren a un nombre de recurso físico existente (por ejemplo, un archivo, un programa de módulo interno o un programa ejecutable) sino a una parte lógica (por ejemplo, un comando o una parte calificadora) que tiene que pasarse por separado a la primera parte de la ruta que identifica un módulo o programa ejecutable administrado por unservidor web; esto se usa a menudo para seleccionar contenido dinámico (un documento, etc.) o para adaptarlo según lo solicitado (ver también:CGIy PATH_INFO, etc.).
Ejemplo:
URI:"http://www.example.com/questions/3456/my-document"
donde: "/questions"es la primera parte de la ruta (un módulo o programa ejecutable) y "/3456/my-document"es la segunda parte de la ruta denominada pathinfo , que se pasa al módulo ejecutable o programa denominado "/questions"para seleccionar el documento solicitado.
Un URI http o https que contiene una parte de información de ruta sin una parte de consulta también puede denominarse " URL limpia " cuya última parte puede ser un " slug ".

El carácter reservado específico del esquema o la implementación +se puede usar en el esquema, información de usuario, host, ruta, consulta y fragmento, y los caracteres reservados específicos del esquema o la implementación !, $, &, ', (, ), *, ,, ;y =se pueden usar en la información de usuario, host, ruta, consulta y fragmento. Además, el carácter reservado genérico :se puede utilizar en la información de usuario, la ruta, la consulta y el fragmento, los caracteres reservados genéricos @se /pueden utilizar en la ruta, la consulta y el fragmento, y el carácter reservado genérico ?se puede utilizar en la consulta y el fragmento. [36]

URI de ejemplo

La siguiente figura muestra URI de ejemplo y sus componentes.

  puerto de host  de información de usuario ┌──┴───┐ ┌──────┴──────┐ ┌┴┐    https://[email protected]:123/forum/questions/?tag=networking&order=newest#top └─┬─┘  └─────────────┬────────────┘ └────── ─┬───────┘  └────────────┬────────────┘  └┬┘  fragmento de consulta de ruta de autoridad de esquema     ldap://[2001:db8::7]/c=GB?objectClass?one └┬─┘  └─────┬─────┘ └─┬─┘  └──────┬──────┘  consulta de ruta de autoridad de esquema    correo a:[email protected] └─┬──┘  └────┬─────────────┘  ruta del esquema  noticias:comp.infosystems.www.servers.unix └┬─┘  └─────────────┬─────────────────┘  ruta del esquema  teléfono:+1-816-555-1212 └┬┘  └──────┬──────┘  ruta del esquema  telnet://192.0.2.16:80/ └─┬──┘  └─────┬─────┘  ruta de autoridad del esquema   urna:oasis:nombres:especificación:docbook:dtd:xml:4.1.2 └┬┘  └──────────────────────┬───────────── ─────────┘  ruta del esquema 

Los DOI ( identificadores de objetos digitales ) encajan dentro del sistema Handle y encajan dentro del sistema URI, según lo facilita la sintaxis adecuada .

referencias URI

Una referencia de URI es un URI o una referencia relativa cuando no comienza con un componente del esquema seguido de dos puntos ( :). [37] Un segmento de ruta que contiene dos puntos (por ejemplo, foo:bar) no se puede utilizar como primer segmento de ruta de una referencia relativa si su componente de ruta no comienza con una barra diagonal ( /), ya que se confundiría con un componente de esquema. Un segmento de ruta de este tipo debe estar precedido por un segmento de ruta de puntos (p. ej., ./foo:bar). [38]

Los lenguajes de marcado de documentos web utilizan con frecuencia referencias URI para señalar otros recursos, como documentos externos o partes específicas del mismo documento lógico: [39]

https://example.com/path/resource.txt#fragment//ejemplo.com/ruta/recurso.txt/ruta/recurso.txtruta/recurso.txt../recurso.txt./recurso.txtrecurso.txt#fragmento

Resolución

Resolver una referencia de URI con respecto a un URI base da como resultado un URI de destino . Esto implica que el URI base existe y es un URI absoluto (un URI sin componente de fragmento). El URI base se puede obtener, en orden de precedencia, de: [40]

Dentro de una representación con un URI base bien definido de

http://a/b/c/d;p?q

una referencia relativa se resuelve a su URI de destino de la siguiente manera: [41]

"g:h" -> "g:h""g" -> "http://a/b/c/g""./g" -> "http://a/b/c/g""g/" -> "http://a/b/c/g/""/g" -> "http://a/g""//g" -> "http://g""?y" -> "http://a/b/c/d;p?y""g?y" -> "http://a/b/c/g?y""#s" -> "http://a/b/c/d;p?q#s""g#s" -> "http://a/b/c/g#s""g?y#s" -> "http://a/b/c/g?y#s"";x" -> "http://a/b/c/?x""g;x" -> "http://a/b/c/g;x""g;x?y#s" -> "http://a/b/c/g;x?y#s""" -> "http://a/b/c/d;p?q""." -> "http://a/b/c/""./" -> "http://a/b/c/"".." -> "http://a/b/""../" -> "http://a/b/""../g" -> "http://a/b/g""../.." -> "http://a/""../../" -> "http://a/""../../g" -> "http://a/g"

manipulación de URL

La manipulación de URL es una técnica mediante la cual se agrega un comando a una URL, generalmente al final, después de un "?" ficha . Se utiliza comúnmente en WebDAV como mecanismo para agregar funcionalidad a HTTP . En un sistema de control de versiones, por ejemplo, para agregar un comando de "pago" a una URL, se escribe como http://editing.com/resource/file.php?command=checkout. Tiene la ventaja de ser fácil para los analizadores CGI y también actúa como intermediario entre HTTP y el recurso subyacente, en este caso. [42]

Relación con los espacios de nombres XML

En XML , un espacio de nombres es un dominio abstracto al que se puede asignar una colección de nombres de elementos y atributos. El nombre del espacio de nombres es una cadena de caracteres que debe cumplir con la sintaxis genérica de URI. [43] Sin embargo, el nombre generalmente no se considera un URI, [44] porque la especificación de URI basa la decisión no solo en los componentes léxicos, sino también en su uso previsto. El nombre de un espacio de nombres no implica necesariamente ninguna semántica de los esquemas URI; por ejemplo, un nombre de espacio de nombres que comienza con http: puede no tener ninguna connotación para el uso de HTTP .

Originalmente, el nombre del espacio de nombres podía coincidir con la sintaxis de cualquier referencia de URI no vacía, pero el W3C desaprobó el uso de referencias de URI relativas. [45] Una especificación separada del W3C para espacios de nombres en XML 1.1 permite que las referencias de identificadores de recursos internacionalizados (IRI) sirvan como base para los nombres de espacios de nombres además de las referencias de URI. [46]

Ver también

Notas

  1. ^ Un informe publicado en 2002 por un grupo de trabajo conjunto W3C/IETF tenía como objetivo normalizar las opiniones divergentes dentro del IETF y el W3C sobre la relación entre los diversos términos y estándares 'UR*'. Si bien ninguna de las organizaciones lo publicó como estándar completo, se ha convertido en la base del entendimiento común mencionado anteriormente y ha informado a muchos estándares desde entonces.
  2. ^ Los procedimientos para registrar nuevos esquemas de URI se definieron originalmente en 1999 mediante RFC  2717 y ahora están definidos por RFC 7595, publicado en junio de 2015. [31]
  3. ^ Para los URI relacionados con recursos en la World Wide Web, algunos navegadores web permiten .0eliminar partes de la notación decimal con puntos o utilizar direcciones IP enteras sin formato. [33]
  4. ^ El histórico RFC  1866 (obsoleto por RFC 2854) anima a los autores de CGI a admitir ';' además de '&'. [35]

Referencias

  1. ^ Berners-Lee, Tim; Fielding, Roy T.; Masinter, Larry 2005, pág. 1, "Resumen"
  2. ^ ab Berners-Lee, Tim; Fielding, Roy T.; Masinter, Larry 2005, pág. 7; "1.1.2. Ejemplos", "1.1.3. URI, URL y URN"
  3. ^ Berners-Lee, Tim; Fielding, Roy T.; Masinter, Larry 2005, pág. 5, "Recurso: el término "recurso" se utiliza en un sentido general para cualquier cosa que pueda identificarse mediante un URI"
  4. ^ Palmer, Sean. "La historia temprana de HTML". infomesh.net . Consultado el 6 de diciembre de 2020 .
  5. ^ "Esquemas de nombres W3". www.w3.org . 1992 . Consultado el 6 de diciembre de 2020 .
  6. ^ "Actas del vigésimo cuarto grupo de trabajo de ingeniería de Internet" (PDF) . pag. 193 . Consultado el 27 de julio de 2021 .
  7. ^ "Actas del vigésimo quinto grupo de trabajo de ingeniería de Internet" (PDF) . pag. 501 . Consultado el 27 de julio de 2021 .
  8. ^ Berners-Lee, Tim (junio de 1994). "Identificadores de recursos universales en WWW". Grupo de Trabajo de Red. doi : 10.17487/RFC1630 . Consultado el 6 de diciembre de 2020 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  9. ^ Berners-Lee, Tim (diciembre de 1994). "Solicitud de comentarios: 1738: Localizadores uniformes de recursos (URL)". herramientas.ietf.org/html . doi : 10.17487/RFC1738 . Consultado el 6 de diciembre de 2020 .
  10. ^ Fosos, R. (mayo de 1997). "Solicitud de comentarios: 2141: sintaxis de URN". herramientas.ietf.org . doi : 10.17487/RFC2141 . Consultado el 6 de diciembre de 2020 .
  11. ^ Berners-Lee, Tim (agosto de 1998). "RFC 2396: Identificadores uniformes de recursos (URI): sintaxis genérica". herramientas.ietf.org . doi : 10.17487/RFC2396 . Consultado el 6 de diciembre de 2020 .
  12. ^ ab RFC 2396 (1998).
  13. ^ Hinden, R. (diciembre de 1999). "RFC 2732: formato para direcciones IPv6 literales en URL". herramientas.ietf.org . doi : 10.17487/RFC2732 . Consultado el 6 de diciembre de 2020 .
  14. ^ Berners-Lee, Tim (enero de 2005). "RFC 3986: Identificador uniforme de recursos (URI): sintaxis genérica". herramientas.ietf.org . doi : 10.17487/RFC3986 . Consultado el 6 de diciembre de 2020 .
  15. ^ Fielding, R. (junio de 1999). "RFC 2616: Protocolo de transferencia de hipertexto - HTTP/1.1". herramientas.ietf.org . doi : 10.17487/RFC2616 . Consultado el 6 de diciembre de 2020 .
  16. ^ Raman, TV (1 de noviembre de 2006). "Sobre vincular representaciones alternativas para permitir el descubrimiento y la publicación". www.w3.org . Consultado el 6 de diciembre de 2020 .
  17. ^ Mealling, M. (agosto de 2002). Harina, M; Denenberg, R (eds.). "RFC 3305: identificadores uniformes de recursos (URI), URL y nombres uniformes de recursos". herramientas.ietf.org . doi : 10.17487/RFC3305 . Consultado el 6 de diciembre de 2020 .
  18. ^ Fielding, Roy (18 de junio de 2005). "[httpRange-14] Resuelto". listas.w3.org . Consultado el 6 de diciembre de 2020 .
  19. ^ Sauermann, Leo (diciembre de 2008). "URI interesantes para la web semántica". www.w3.org . Consultado el 6 de diciembre de 2020 .
  20. ^ Grupo de interés en planificación de URI, W3C/IETF (septiembre de 2001). "URI, URL y URN: aclaraciones y recomendaciones 1.0". www.w3.org . W3C/IETF . Consultado el 8 de diciembre de 2020 .{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  21. ^ Grupo de interés de planificación conjunto W3C/IETF URI (2002).
  22. ^ "Estándar de URL: 6.3. API de URL en otros lugares".
  23. ^ "Estándar de URL: objetivos".
  24. ^ Berners-Lee, Tim; Fielding, Roy T.; Masinter, Larry 2005, pág. 46; "9. Agradecimientos"
  25. ^ ab Berners-Lee, Tim; Fielding, Roy T.; Masinter, Larry 2005, págs. 13-14; "2.2. Caracteres reservados", "2.3. Caracteres no reservados"
  26. ^ Berners-Lee, Tim; Fielding, Roy T.; Masinter, Larry 2005, págs. 12; "2.1. Codificación porcentual"
  27. ^ RFC 3986 (2005), §2.
  28. ^ RFC 3986 (2005), §2.1.
  29. ^ ab RFC 3986 (2005), §3.
  30. ^ RFC 3986 (2005), §5.2.1.
  31. ^ IETF (2015).
  32. ^ RFC 3986 (2005), §3.2.2.
  33. ^ Lorenzo (2014).
  34. ^ RFC 2396 (1998), §3.3.
  35. ^ RFC 1866 (1995), §8.2.1.
  36. ^ RFC 3986 (2005), §A.
  37. ^ RFC 3986 (2005), §4.1.
  38. ^ RFC 3986 (2005), §4.2.
  39. ^ RFC 3986 (2005), §4.4.
  40. ^ RFC 3986 (2005), §5.1.
  41. ^ RFC 3986 (2005), §5.4.
  42. ^ Whitehead 1998, pag. 38.
  43. ^ Morrison (2006).
  44. ^ Harold (2004).
  45. ^ W3C (2009).
  46. ^ W3C (2006).

Trabajos citados

Otras lecturas

enlaces externos