XML ( lenguaje de marcado extensible en inglés ) lenguaje de marcado extensible | |
---|---|
Extensión | .xml |
tipo MIME | application/xml [1] , text/xml [2] (obsoleto en un borrador caducado) [3] |
Desarrollador | Consorcio Mundial de la red |
publicado | 1998 |
Tipo de formato | lenguaje de marcas |
Expandido desde | SGML |
Desarrollado en | XHTML , RSS , Atom , KML , SVG y muchos otros formatos |
Estándar(es) |
1.0 (quinta edición), 26 de noviembre de 2008 [4] 1.1 (segunda edición), 16 de agosto de 2006 [5] |
formato abierto ? | Sí |
Sitio web | w3.org/XML_ _ |
Archivos multimedia en Wikimedia Commons |
XML ( MFA : [ ˌ e k s . e m ˈ e l ], abreviatura del inglés. e Xtensible Markup L anguage ) - " lenguaje de marcado extensible " . Recomendado por el Consorcio World Wide Web (W3C). La especificación XML describe documentos XML y describe parcialmente el comportamiento de los procesadores XML (programas que leen documentos XML y brindan acceso a su contenido). XML fue diseñado para ser un lenguaje con una sintaxis formal simple , fácil de crear y procesar documentos tanto para programas como para humanos , con énfasis en el uso en Internet. El lenguaje se llama extensible porque no corrige el marcado utilizado en los documentos: el desarrollador es libre de crear marcado de acuerdo con las necesidades de un área en particular, estando limitado solo por las reglas de sintaxis del lenguaje. Una extensión XML es una gramática concreta basada en XML y representada por un diccionario de etiquetas y sus atributos, así como un conjunto de reglas que definen qué atributos y elementos pueden estar contenidos dentro de otros elementos. La combinación de sintaxis formal simple, facilidad de uso, extensibilidad y confianza en las codificaciones Unicode para representar el contenido de los documentos ha llevado al uso generalizado tanto del propio XML como de una variedad de lenguajes especializados derivados de XML en una amplia variedad de herramientas de software.
XML es un subconjunto de SGML .
La especificación XML describe el lenguaje y una serie de cuestiones relacionadas con la codificación y el procesamiento de documentos. El material de esta sección es un resumen de la descripción del lenguaje en la especificación XML, adaptada para este artículo.
La versión en inglés del documento se considera normativa, por lo que los términos principales se dan con sus originales en inglés.
La traducción de los términos principales sigue básicamente la traducción de la Especificación al ruso disponible en Internet, con la excepción de los términos etiqueta y declaración . Para la etiqueta de término, aquí se usa la etiqueta de traducción . Para la declaración de término, se da preferencia a la declaración de traducción común (frente a la declaración de papel de calco también común ).
Otras traducciones de los términos principales se pueden encontrar en la literatura y en Internet.
Desde un punto de vista físico, un documento consta de entidades , cada una de las cuales puede hacer referencia a otra entidad. El único elemento raíz es la entidad del documento . El contenido de las entidades son símbolos.
Desde un punto de vista lógico, el documento consta de comentarios ( comentarios en inglés ), declaraciones ( declaraciones en inglés ), elementos ( elementos en inglés ), referencias a entidades ( referencias de caracteres en inglés ) e instrucciones de procesamiento ( instrucciones de procesamiento en inglés ). Todo esto en el documento está estructurado por marcado .
Estructura físicaUna entidad es la parte más pequeña de un documento. Todas las entidades contienen algo, y todas tienen un nombre (hay excepciones, por ejemplo , entidad de documento ). En pocas palabras, el término "esencia" describe la "cosa existente", " algo " [6] .
Un documento consta de entidades cuyo contenido son símbolos. Todos los caracteres se dividen en dos tipos: caracteres de datos (datos de caracteres en inglés ) y caracteres de marcado. El marcado incluye:
La parte sin marcado del documento son los datos de carácter del documento.
Estructura lógicaTodas las partes constituyentes del documento se resumen en el prólogo y el elemento raíz . El elemento raíz es parte obligatoria del documento, que constituye toda su esencia (el prólogo, por lo general, puede estar ausente). El elemento raíz puede incluir o no sus elementos anidados, datos de caracteres y comentarios. Los elementos anidados dentro del elemento raíz pueden, a su vez, incluir elementos anidados, datos de caracteres y comentarios, etc. Prolog puede incluir declaraciones , instrucciones de procesamiento , comentarios . Debe comenzar con una declaración XML , aunque esta declaración puede omitirse en ciertas situaciones.
Los elementos del documento deben anidarse correctamente : cualquier elemento que comience dentro de otro elemento (es decir, cualquier elemento del documento que no sea el elemento raíz) debe terminar dentro del elemento en el que comenzó. Los datos de caracteres pueden ocurrir dentro de elementos ya sea directamente o en secciones especiales "CDATA" . Las declaraciones, las instrucciones de procesamiento y los elementos pueden tener atributos asociados con ellos. Los atributos se utilizan para asociar pares de nombre y valor con una unidad lógica de texto.
El marcado siempre comienza con un carácter <y termina con un >.
Junto con los símbolos <y >, el símbolo también juega un papel especial en el marcado &. Los corchetes angulares marcan los límites de los elementos, las instrucciones de procesamiento y algunas otras secuencias. El ampersand le permite reemplazar texto usando entidades ( entidades inglesas ) [6] .
El uso de caracteres de marcado en datos de caracteres dificulta el reconocimiento de construcciones de marcado y puede crear un problema de ambigüedad de estructura. En XML, este problema se resuelve de la siguiente manera: <, > y & no pueden estar presentes en datos de caracteres y en valores de atributos en su forma directa, se reservan entidades especiales para su representación en estos casos :
Símbolo | Reemplazo |
---|---|
< | < |
> | > |
& | &erio; |
Además, las siguientes entidades se usan para usar apóstrofes y comillas dentro de los valores de los atributos :
' | ' |
" | " |
La regla de reemplazar los caracteres de marcado con sus entidades denotativas no se aplica a los datos de caracteres en las secciones "CDATA", pero se realiza en todos los demás lugares del documento.
Las referencias de caracteres numéricos indican la posición del código del carácter en el conjunto de caracteres del documento. Las referencias de caracteres numéricos pueden adoptar dos formas [7] :
Ejemplos de referencias de caracteres numéricos:
En XML, todos los nombres deben comenzar con una letra, el carácter de subrayado (_) y continuar solo con los caracteres permitidos para los nombres, a saber: solo pueden contener letras que forman parte de la sección de letras Unicode, números arábigos, guiones, guiones bajos , puntos. Dado que las letras no se limitan únicamente a los caracteres ASCII, se pueden usar letras de cualquier idioma en los nombres.
Una declaración XML especifica la versión del idioma en el que está escrito el documento. Dado que la interpretación del contenido de un documento depende de la versión del lenguaje, la Especificación prescribe comenzar el documento con una declaración XML. En la primera versión (1.0) del lenguaje, el uso de la declaración era opcional, en versiones posteriores es obligatorio. Por lo tanto, la versión del idioma se determina a partir de la declaración y, si no hay declaración, se asume la versión 1.0.
Además de la versión XML, la declaración también puede contener información sobre la codificación del documento y "si el documento debe permanecer con su propio DTD , o con uno incluido".
Ejemplo:
<?versión xml="1.1" codificación="UTF-8" ?>o:
<?versión xml="1.0" codificación="windows-1251"?>En todos estos ejemplos, faltaba el atributo "independiente", que solo determina si se deben incluir descripciones de marcado en el documento desde el exterior. Por defecto es "no":
<?versión xml="1.0" codificación="windows-1251" standalone="no"?>si el documento XML hace referencia a otras DTD que describen lo que puede contener el documento, debe especificarstandalone="no"
<?versión xml="1.0" codificación="UTF-8" independiente="sí"?>si el documento XML no hace referencia a otros archivos y utilizará su propia DTD, debe especificarstandalone="yes"
Declaración de tipo de documentoHay una instrucción especial para declarar un tipo de documento !DOCTYPE. Te permite especificar, usando el lenguaje DTD, qué elementos se incluyen en el documento, cuáles son sus atributos, qué entidades se pueden usar y algo más.
Por ejemplo, aquí está el documento correcto:
<?xml version="1.0"?> <saludo> ¡Hola, mundo! </saludo>Tiene un elemento raíz <greeting>Hello, world!</greeting>, y lógicamente el documento existe. Sin embargo, no es válido ( ing. no válido ) [8] .
Con la ayuda de una Declaración de Tipo de Documento (DTD), es posible describir su contenido y estructura lógica, así como asociar un par nombre-valor con un elemento específico. Así es como se ve el prólogo en la entrada de Backus-Naur [9] :
prólogo ::= XMLDecl? Misc* (doctypedecl Misc*)? XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? ¿S? '?>' VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"') Ecuación ::= S? '='S? Número de versión ::= '1.' [0-9]+ Varios ::= Comentar | IP | S doctypedecl ::= '<!DOCTYPE' S Nombre (S ExternalID)? ¿S? ('[' intSubset ']' S?)? '>' SepDecl ::= PEReferencia | S intSubset ::= (margendecl | DeclSep)* markupdecl ::= elementdecl | AttlistDecl | EntityDecl | Notación Dec | IP | Comentario extSubset ::= TextDecl? extSubsetDecl extSubsetDecl ::= ( markupdecl | conditionalSect | DeclSep)*La declaración XML puede ir seguida de comentarios, instrucciones de procesamiento o espacios en blanco [10] , pero luego vienen las declaraciones de tipo de documento, donde "Name" es el nombre de la etiqueta raíz , "ExternalID" es el identificador externo e "intSubset" es la declaración de marcado, o bien la referencia a la entidad. Como dice la especificación, si un identificador externo se declara junto con una declaración interna, entonces este último viene antes que el primero [11] .
Por ejemplo:
<?xml version="1.0"?> <!DOCTYPE saludo SYSTEM "hello.dtd"> <saludo> ¡Hola mundo! </saludo>Aquí " SYSTEM "hello.dtd"" es un identificador externo: la dirección "hola.dtd" le permite utilizar los datos del documento "hola.dtd" como declaraciones de marcado.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE saludo [ <!ELEMENT saludo (#PCDATA)> ]> <saludo> ¡Hola, mundo! </saludo>Aquí, el marcado se declaró localmente en el archivo !DOCTYPE.
Instrucción de procesamientoLas instrucciones de procesamiento ( ing. instrucción de procesamiento, PI ), le permiten colocar instrucciones para aplicaciones en el documento. El siguiente ejemplo muestra una instrucción de procesamiento de hoja de estilo xml que pasa las instrucciones en el archivo my-style.css a una aplicación de hoja de estilo xml (como un navegador) a través del atributo href:
<?xml-stylesheet type="text/css" href="mi-estilo.css"?> ComentarioLos comentarios ( eng. comment ) no se refieren a los datos de carácter del documento. El comentario comienza con la secuencia "<!--" y termina con la secuencia "-->", la combinación de caracteres "--" no puede ocurrir dentro. El carácter & no se usa como marcado dentro de un comentario.
Ejemplo:
<!-- esto es un comentario -->Un elemento es un concepto de la estructura lógica de un documento. Cada documento contiene uno o más elementos. Los límites de los elementos están representados por etiquetas de inicio y finalización . El nombre del elemento en las etiquetas de inicio y final del elemento debe coincidir. Un elemento también se puede representar mediante una etiqueta de elemento vacía , es decir, que no incluye otros elementos ni datos de caracteres.
Tag ( tag en inglés ) es una construcción de marcado que contiene el nombre de un elemento.
Etiqueta de inicio: <elemento1>
Etiqueta final: </element1>
Etiqueta de elemento vacío: <empty_element1 />
En un elemento, los atributos solo se pueden usar en la etiqueta de inicio y en la etiqueta del elemento vacío.
Un ejemplo de una receta marcada con XML:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE receta> <receta nombre= "pan" preptime= "5min" cooktime= "180min" > <title> pan sencillo </título> <composición> <cantidad de ingrediente = "3" unidad= "vaso" > Harina </ingrediente> < cantidad de ingrediente= "0.25" unidad= "gramo" > Levadura </ingrediente> < cantidad de ingrediente= "1.5" unit= "vaso" > Agua tibia </ingrediente> </composición> <instrucciones> <paso> Mezclar todos los ingredientes y amasar bien. </paso> <paso> Cierra con un paño y déjalo durante una hora en una habitación templada. </paso> <!-- <paso> Lee el periódico de ayer. </paso> es un paso dudoso... --> <paso> Amasar nuevamente, poner en una bandeja para hornear y poner en el horno. </paso> </instrucciones> </receta> Sección CDATALa sección CDATA no es una unidad lógica de texto. Una sección puede aparecer en cualquier parte de un documento donde la sintaxis permita colocar datos de caracteres. La sección comienza <![CDATA[y termina ]]>. Entre este marcado hay datos de caracteres; por lo tanto, los datos de caracteres incluyen caracteres < > &en su forma inmediata.
Un documento bien formado se ajusta a todas las reglas generales de sintaxis XML aplicables a cualquier documento XML : estructura correcta del documento, nombres coincidentes en la etiqueta del elemento inicial y final, etc. Un documento que no está bien formado no puede considerarse un documento xml.
Ejemplo de documento:
<?xml version="1.0" encoding="UTF-8"?> <!-- pantalla de inicio de sesión --> <edsscript> <nombre de secuencia = "inicio" > <acción cmd= "triggeron" > bt* </acción> <acción cmd= "desencadenar" > msg_generic </acción> <acción cmd= "deshabilitarbb" > todos </acción> <acción cmd= "setscrtext" > @@Sistema Giris@@ </acción> <acción cmd= "habilitarbb" > adelante, menú principal </acción> <acción cmd= "cambiarmsgobjetivo" > LOGIN_DLG </acción> <acción cmd= "enviarmsg" > comienzo </acción> <acción cmd= "saltar" > paso 2 </acción> </secuencia> < nombre de secuencia= "paso2" > <acción cmd= "trigger de espera" > btnforward </acción> <acción cmd= "desencadenar" > acceso* </acción> <acción cmd= "deshabilitarbb" > todos </acción> <acción cmd= "enviarmsg" > controlar </acción> </secuencia> <trigger name= "login_succeded" > < tipo de condición= "appmsg" > login_succeeded </condición> <secuencia> <acción cmd= "endscript" /> </secuencia> </trigger> <trigger name= "login_unknownuser" > < tipo de condición= "appmsg" > usuario_desconocido </condición> <nombre de secuencia = "login_usuariodesconocido" > <acción cmd= "disablenbb" > todos </acción> <acción cmd= "setscrtext" > @@hata@@ </acción> <acción cmd= "mostrarhtml" > generic_neg.htm,@@Yanlış kullanıcı ismi@@,@@Lütfen kullanıcı ismini doğru giriniz.@@ </acción> <acción cmd= "habilitarbb" > espalda </acción> <acción cmd= "gatillo de espera" > retroceder </acción> <acción cmd= "saltar" > comienzo </acción> </secuencia> </trigger> <trigger name= "login_incorrectpwd" > < tipo de condición= "appmsg" > login_incorrectpwd </condición> <nombre de secuencia = "login_incorrectpwd" > <acción cmd= "disablenbb" > todos </acción> <acción cmd= "setscrtext" > @@hata@@ </acción> <acción cmd= "mostrarhtml" > generic_neg.htm,@@Hatalı parola@@,@@Lütfen parolanızı doğru giriniz.@@ </acción> <acción cmd= "habilitarbb" > espalda </acción> <acción cmd= "gatillo de espera" > retroceder </acción> <acción cmd= "saltar" > comienzo </acción> </secuencia> </trigger> <!-- disparadores genéricos --> <trigger name= "btnback" > < tipo de condición= "buttonclick" > espalda </condición> <nombre de secuencia = "btnback" > <acción cmd= "triggeron" > retroceder </acción> </secuencia> </trigger> <trigger name= "btnforward" > < tipo de condición= "buttonclick" > delantero </condición> <nombre de secuencia = "btnforward" > <acción cmd= "triggeron" > btnforward </acción> </secuencia> </trigger> <trigger name= "btnmainmenu" > < tipo de condición= "buttonclick" > menú principal </condición> <secuencia> <acción cmd= "jumpscript" > <value label= "mainmenuscript" scope= "local" /> </action> </sequence> </trigger> <trigger name= "btnquitapp" > < tipo de condición = "clic de botón" > quitaaplicacion </condición> <nombre de secuencia = "btnquitapp" > <acción cmd= "script de llamada" > quitaapp.xml </acción> <acción cmd= "saltar" > comienzo </acción> </secuencia> </trigger> <trigger name= "error_generic" > < tipo de condición= "appmsg" > error* </condición> <secuencia> <acción cmd= "showhtml" > errdsc_null.htm,@@Hata@@ </acción> <acción cmd= "deshabilitarbb" > todos </acción> <acción cmd= "habilitarbb" > delantero </acción> <acción cmd= "gatillo de espera" > btnforward </action> <action cmd= "endscript" /> </sequence> </trigger> <trigger name= "msg_generic" > < tipo de condición= "appmsg" > msg_generic </condición> <secuencia> <acción cmd= "showhtml" > generic_msg.htm </acción> <acción cmd= "desencadenar" > msg_generic </action> </sequence> </trigger> <!-- Se lanza una excepción no controlada desde el lado del código duro. --> <trigger name= "error_hardcodeside" > < tipo de condición= "appmsg" > error_hardcodeside </condición> <secuencia> <acción cmd= "triggeroff" > * </acción> <acción cmd= "desencadenar" > btnmainmenu </acción> <acción cmd= "desencadenar" > btnquitapp </acción> <acción cmd= "deshabilitarbb" > todos </acción> <acción cmd= "habilitarbb" > menú principal </acción> <acción cmd= "mostrarhtml" > errdsc_null.htm,Hata, @@İşlem sırasında bir hata meydana geldi.@@ </acción> <acción cmd= "gatillo de espera" > btnmainmenu </acción> </secuencia> </trigger> </edscript>Esta sección contiene un resumen de algunas de las disposiciones de las recomendaciones del W3C relacionadas con el trabajo con documentos. Las recomendaciones correspondientes pueden aplicarse tanto a documentos XML como a la clase más amplia de documentos. Por lo general, se proporcionan enlaces a las herramientas de gestión de documentos recomendadas por el W3C.
La especificación requiere que los procesadores admitan al menos dos codificaciones Unicode: UTF-8 y UTF-16 .
La especificación XML define los conceptos de un procesador XML y una aplicación . Un procesador XML ( analizador ) es un programa que analiza el marcado y pasa información sobre la estructura de un documento a otro programa, una aplicación.
La especificación XML impone ciertos requisitos al procesador sin afectar los requisitos de la aplicación.
Un documento es válido si tiene una definición de tipo de documento asociada y si el documento cumple con las restricciones presentadas en la definición de tipo de documento.
Los procesadores XML se dividen en dos clases: validadores y no validadores.
Los procesadores de validación verifican la validez del documento y deben informar (a elección del usuario) las violaciones de las restricciones establecidas en la definición del tipo de documento.
Los procesadores que no validan no verifican la validez del documento, pero los deberes de procesamiento previo del documento mencionados anteriormente permanecen con ellos.
Los lenguajes de esquema se utilizan para describir tipos de documentos . Dado que XML es un subconjunto del lenguaje SGML , hereda el lenguaje de definición de tipo de documento ( DTD ) desarrollado para SGML. Posteriormente se desarrollaron otros lenguajes de esquema, siendo los más conocidos XML Schema , RELAX NG .
XSLT está diseñado para resolver el problema de transformar un documento XML en otro esquema u otro formato .
Para un documento formateado (un documento preparado para renderizar), se pretende el formato XSL-FO .
XPath es una sintaxis para abordar el contenido de un documento representado en forma de árbol. Las expresiones XPath se utilizan en el lenguaje XQuery . Las expresiones XPath generalmente se pueden usar en cualquier contexto donde sea apropiado usar referencias formales a elementos de árbol, en particular como parámetros para métodos de interfaces de acceso a documentos.
XQuery es un lenguaje de programación orientado a documentos.
Hay tres opciones de API para leer XML [12] .
API de eventos ( API impulsada por eventos, API de estilo push ): el procesador XML lee XML; en un determinado evento (la aparición de una etiqueta de apertura o cierre, cadena de texto, atributo), se llama a la función de devolución de llamada.
Stream API (también API de estilo pull ): dispuesta a la manera de flujos de E/S . El código de la aplicación le pide al procesador partes del XML, que solo puede avanzar a través del XML, olvidando las partes ya pasadas.
Object API ( Document Object Model , DOM, "document object model"): lee XML y lo vuelve a crear en la memoria como una estructura de objeto.
También hay API híbridas: el método de transmisión lee las partes externas y sin importancia, mientras que el método de objeto lee las partes internas e importantes.
Ejemplo de código (C++, API ficticia) xml :: Lector StreamReader ( "in.xml" ); std :: cadena nombre , valor ; lector _ enterTag ( "documento" ); while ( lector . getTag ( "cosa" ) { xml :: Elemento * elThing = lector . leerEntireSubtree (); cosas _ emplace_back (); Cosa y cosa = cosas . atrás (); cosa _ nombre = elCosa . requireStringAttr ( "nombre" ); cosa _ valor = la Cosa . texto (); }La API Direct Write escribe XML etiqueta por etiqueta, atributo por atributo.
Object API , también conocido como modelo de objeto de documento .
XML tiene implementaciones de analizador para todos los lenguajes de programación modernos [17] .
Sin el uso de CSS o XSL , el documento XML se representa como texto sin formato en la mayoría de los navegadores web. Algunos navegadores como Internet Explorer , Mozilla Firefox y Opera (la herramienta Dragonfly integrada de Opera ) muestran la estructura del documento como un árbol, lo que permite contraer y expandir los nodos con clics del mouse.
Aplicar estilos CSSEl proceso es similar a aplicar CSS a un documento HTML para mostrarlo. Para aplicar CSS cuando se muestra en un navegador, el documento XML debe contener un enlace especial a la hoja de estilo. Por ejemplo:
<?xml-stylesheet type="text/css" href="myStyleSheet.css"?>Esto es diferente del enfoque HTML, que usa el elemento <link>.
Aplicando transformaciones al formato XSL-FOLos navegadores modernos se encuentran entre las herramientas que pueden realizar transformaciones XSLT. En el navegador, dicha transformación generalmente se realiza para formatear el documento (convertir el documento al formato XSL-FO). La siguiente declaración en el prólogo del documento XML indica al navegador que realice la transformación XSLT descrita en el archivo transform.xsl:
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>Puede trabajar con un documento XML en un editor de texto normal, pero los editores normales no admiten la estructura del documento. Existen editores XML especiales que hacen que trabajar con un documento sea más conveniente y eficiente.
El sistema de gestión de bases de datos DB2 le permite almacenar datos en formato XML y proporciona acceso a dichos datos utilizando el lenguaje XQuery.
XML es compatible con los niveles bajos de hardware, firmware y software en las soluciones de hardware modernas [18] .
XML es un lenguaje de marcado, en otras palabras, un medio para describir un documento. Es en el nicho de documentos, textos, donde la proporción de datos de caracteres heterogéneos es grande y la proporción de marcado es pequeña: XML tiene éxito. Por otro lado, el intercambio de datos en sistemas abiertos no se limita al intercambio de documentos. La redundancia del marcado XML (y para fines de diseño de lenguaje, se establece explícitamente que la concisión no es una prioridad del proyecto) afecta situaciones en las que los datos no encajan en el modelo de documento tradicional. Una fuente de noticias, por ejemplo, formateada con sintaxis XML ( RSS , formatos Atom ), no es un documento en el sentido tradicional, sino un flujo del mismo tipo de minidocumentos: el marcado detallado y redundante en este caso es una parte esencial. de los datos transmitidos.
El W3C está preocupado por la efectividad de XML, y los grupos de trabajo relevantes están analizando este problema (a principios de 2013, no se han desarrollado documentos normativos).
Otra situación en la que los formatos XML pueden no ser la mejor solución es cuando se trabaja con datos con una estructura simple y una pequeña cantidad de datos de caracteres (campos de datos). En este caso, la parte del marcado en el volumen total es grande y el procesamiento programático de XML puede ser excesivamente costoso en comparación con el trabajo con datos de una estructura más simple. En esta área, los desarrolladores buscan herramientas nativas orientadas a datos como INI , YAML , JSON .
W3C está trabajando en la creación de un lenguaje de secuencias de comandos para trabajar con XML (a principios de 2013 no se han desarrollado documentos normativos).
Consorcio World Wide Web (W3C) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Productos y estándares |
| ||||||||||||||
Organizaciones |
| ||||||||||||||
EN |
| ||||||||||||||
Conferencias |
|
web semántica | |
---|---|
Lo esencial | |
Subsecciones |
|
Aplicaciones |
|
Temas relacionados | |
Estándares |
|
Web y sitios web | |
---|---|
globalmente | |
En la zona | |
Tipos de sitios y servicios |
|
Creación y mantenimiento | |
Tipos de diseños, páginas, sitios. | |
Técnico | |
Marketing | |
sociedad y Cultura |
Lenguajes de marcado de documentos | |
---|---|
documentos de oficina | |
bien conocido | |
menos conocido |
|