Articulo de referencia

XML

application/xml , text/xml {{cite IETF |first1=H.|last1=Thompson|first2=C.|last2=Lilley|rfc=7303 |title=XML Media Types |publisher=Internet Engineering Task Force |date=July 201...

El Lenguaje de Marcado Extensible ( XML ) es un lenguaje de marcado y formato de archivo para almacenar, transmitir y reconstruir datos. Define un conjunto de reglas para codificar documentos en un formato legible tanto para humanos como para máquinas . La Especificación XML 1.0 del Consorcio World Wide Web [ 2 ] de 1998 [ 3 ] y varias otras especificaciones relacionadas [ 4 ] —todas ellas estándares abiertos y gratuitos— definen XML. [ 5 ]

Los objetivos de diseño de XML enfatizan la simplicidad, la generalidad y la usabilidad en Internet . [ 6 ] Es un formato de datos textuales con un fuerte soporte a través de Unicode para diferentes idiomas humanos . Aunque el diseño de XML se centra en documentos, el lenguaje se usa ampliamente para la representación de estructuras de datos arbitrarias , [ 7 ] como las que se usan en los servicios web . [ 8 ]

Existen varios sistemas de esquemas que ayudan a definir lenguajes basados ​​en XML, mientras que los programadores han desarrollado muchas interfaces de programación de aplicaciones (API) para facilitar el procesamiento de datos XML.

Descripción general

El objetivo principal de XML es la serialización , es decir, almacenar, transmitir y reconstruir datos arbitrarios. Para que dos sistemas distintos intercambien información, necesitan acordar un formato de archivo. XML estandariza este proceso. Por lo tanto, es análogo a una lengua franca para representar información. [ 9 ]

Como lenguaje de marcado , XML etiqueta, categoriza y organiza estructuralmente la información. [ 10 ] Las etiquetas XML representan la estructura de datos y contienen metadatos . Lo que se encuentra dentro de las etiquetas son datos, codificados de la manera que especifica el estándar XML. [ 10 ] Un esquema XML adicional (XSD) define los metadatos necesarios para interpretar y validar XML. (Esto también se conoce como esquema canónico). [ 11 ] Un documento XML que se adhiere a las reglas básicas de XML está "bien formado"; uno que se adhiere a su esquema es "válido". [ 11 ]

IETF RFC 7303 (que reemplaza al RFC 3023 anterior ), proporciona reglas para la construcción de tipos de medios para su uso en mensajes XML. Define tres tipos de medios: application/xml( text/xmles un alias), application/xml-external-parsed-entity( text/xml-external-parsed-entityes un alias) y application/xml-dtd. Se utilizan para transmitir archivos XML sin procesar sin exponer su semántica interna . RFC 7303 recomienda además que a los lenguajes basados ​​en XML se les asignen tipos de medios que terminen en +xml, por ejemplo, image/svg+xmlpara SVG .

En el RFC 3470 , también conocido como IETF BCP 70, se ofrecen más directrices para el uso de XML en un contexto de red. Este documento abarca muchos aspectos del diseño y la implementación de un lenguaje basado en XML. [ 8 ]

Aplicaciones

XML se ha generalizado para el intercambio de datos a través de Internet. Se han desarrollado cientos de formatos de documentos que utilizan la sintaxis XML, [ 12 ] incluyendo RSS , Atom , Office Open XML , OpenDocument , SVG , COLLADA y XHTML . XML también proporciona el lenguaje base para protocolos de comunicación como SOAP y XMPP . Es uno de los formatos de intercambio de mensajes utilizados en la técnica de programación AJAX (Asynchronous JavaScript and XML) .

Muchos estándares de datos de la industria, como Health Level 7 , OpenTravel Alliance , FpML , MISMO y el National Information Exchange Model, se basan en XML y en las numerosas funcionalidades de la especificación del esquema XML. En el ámbito editorial, Darwin Information Typing Architecture es un estándar de datos XML de la industria. XML se utiliza ampliamente como base para diversos formatos de publicación.

Una de las aplicaciones de XML en la ciencia es la representación de información meteorológica operativa basada en los estándares IWXXM . [ 13 ]

Terminología clave

El material de esta sección se basa en la especificación XML . Esta no es una lista exhaustiva de todas las construcciones que aparecen en XML; proporciona una introducción a las construcciones clave que se encuentran con mayor frecuencia en el uso cotidiano.

Personaje
Un documento XML es una cadena de caracteres . En un documento XML (1.1) puede aparecer cualquier carácter Unicode válido (excepto el carácter nulo) (aunque algunos no se recomiendan).
Procesador y aplicación
El procesador analiza el marcado y pasa información estructurada a una aplicación . La especificación establece requisitos sobre lo que un procesador XML debe y no debe hacer, pero la aplicación queda fuera de su ámbito. Al procesador (como lo denomina la especificación) se le suele llamar coloquialmente analizador XML .
Marcado y contenido
Los caracteres que componen un documento XML se dividen en marcado y contenido , que se pueden distinguir mediante la aplicación de reglas sintácticas simples . Generalmente, las cadenas que constituyen el marcado comienzan con el carácter <y terminan con un >, o comienzan con el carácter &y terminan con un ;. Las cadenas de caracteres que no son marcado son contenido. Sin embargo, en una sección CDATA<![CDATA[ , los delimitadores y ]]>se clasifican como marcado, mientras que el texto entre ellos se clasifica como contenido. Además, los espacios en blanco antes y después del elemento más externo se clasifican como marcado.
Etiqueta
Una etiqueta es una construcción de marcado que comienza con <y termina con >. Hay tres tipos de etiquetas:
  • etiqueta de inicio , como por ejemplo <section>;
  • etiqueta final , como por ejemplo </section>;
  • etiqueta de elemento vacío , como por ejemplo <line-break />.
Elemento
Un elemento es un componente lógico de un documento que comienza con una etiqueta de inicio y termina con una etiqueta de cierre correspondiente, o bien consiste únicamente en una etiqueta de elemento vacía. Los caracteres entre la etiqueta de inicio y la de cierre, si los hay, constituyen el contenido del elemento y pueden contener marcado, incluidos otros elementos, que se denominan elementos secundarios . Un ejemplo es . Otro ejemplo es .<greeting>Hello, world!</greeting><line-break />
Atributo
Un atributo es una construcción de marcado que consiste en un par nombre-valor que existe dentro de una etiqueta de inicio o una etiqueta de elemento vacío. Un ejemplo es <img src="madonna.jpg" alt="Madonna" />, donde los nombres de los atributos son "src" y "alt", y sus valores son "madonna.jpg" y "Madonna" respectivamente. Otro ejemplo es , donde el nombre del atributo es "número" y su valor es "3". Un atributo XML solo puede tener un único valor y cada atributo puede aparecer como máximo una vez en cada elemento. En la situación común en la que se desea una lista de múltiples valores, esto debe hacerse codificando la lista en un atributo XML bien formado [ i ] con algún formato más allá de lo que XML define por sí mismo. Por lo general, se trata de una lista delimitada por comas o punto y coma o, si se sabe que los valores individuales no contienen espacios, [ ii ] se puede utilizar una lista delimitada por espacios. Un ejemplo con el espacio como delimitador es , donde el atributo "class" tiene el valor "inner greeting-box" y también indica los dos nombres de clase CSS "inner" y "greeting-box".<step number="3">Connect A to B.</step><div class="inner greeting-box">Welcome!</div>
Declaración XML
Los documentos XML pueden comenzar con una declaración XML que describe alguna información sobre sí mismos. Un ejemplo es <?xml version="1.0" encoding="UTF-8"?>.

Personajes y escape

Los documentos XML constan exclusivamente de caracteres del repertorio Unicode . Salvo un pequeño número de caracteres de control específicamente excluidos , cualquier carácter definido por Unicode puede aparecer en el contenido de un documento XML.

XML incluye funciones para identificar la codificación de los caracteres Unicode que componen el documento, y para expresar caracteres que, por una razón u otra, no se pueden usar directamente.

Caracteres válidos

Los puntos de código Unicode en los siguientes rangos son válidos en documentos XML 1.0: [ 14 ]

  • U+0009 (tabulación horizontal), U+000A (salto de línea), U+000D (retorno de carro): estos son los únicos controles C0 aceptados en XML 1.0;
  • U+0020–U+D7FF, U+E000–U+FFFD: esto excluye algunos caracteres que no están en el BMP (todos los sustitutos, U+FFFE y U+FFFF están prohibidos);
  • U+10000–U+10FFFF: esto incluye todos los puntos de código en planos suplementarios, incluidos los que no son caracteres.

XML 1.1 amplía el conjunto de caracteres permitidos para incluir todos los anteriores, más los caracteres restantes en el rango U+0001–U+001F. [ 15 ] Sin embargo, al mismo tiempo, restringe el uso de caracteres de control C0 y C1 distintos de U+0009 (tabulación horizontal), U+000A (salto de línea), U+000D (retorno de carro) y U+0085 (siguiente línea) al requerir que se escriban en forma de escape (por ejemplo, U+0001 debe escribirse como &#x01;o su equivalente). En el caso de los caracteres C1, esta restricción es una incompatibilidad con versiones anteriores; se introdujo para permitir la detección de errores de codificación comunes.

El punto de código U+0000 (Nulo) es el único carácter que no está permitido en ningún documento XML 1.1.

detección de codificación

El conjunto de caracteres Unicode se puede codificar en bytes para su almacenamiento o transmisión de diversas maneras, denominadas "codificaciones". Unicode define codificaciones que cubren todo el repertorio; entre las más conocidas se encuentran UTF-8 (que el estándar XML recomienda usar, sin BOM ) y UTF-16 . [ 16 ] Existen muchas otras codificaciones de texto anteriores a Unicode, como ASCII y varias ISO/IEC 8859 ; sus repertorios de caracteres son, en todos los casos, subconjuntos del conjunto de caracteres Unicode.

XML permite el uso de cualquiera de las codificaciones definidas por Unicode y cualquier otra codificación cuyos caracteres también aparezcan en Unicode. XML también proporciona un mecanismo mediante el cual un procesador XML puede determinar de forma fiable, sin ningún conocimiento previo, qué codificación se está utilizando. [ 17 ] Las codificaciones distintas de UTF-8 y UTF-16 no son necesariamente reconocidas por todos los analizadores XML (y en algunos casos ni siquiera UTF-16, aunque el estándar exige que también se reconozca).

Escapando

XML proporciona mecanismos de escape para incluir caracteres que resultan problemáticos al incluirlos directamente. Por ejemplo:

  • Los caracteres " < " y "&" son marcadores de sintaxis clave y nunca deben aparecer en contenido fuera de una sección CDATA . Se permite, pero no se recomienda, usar " < " en valores de entidades XML. [ 18 ]
  • Algunas codificaciones de caracteres solo admiten un subconjunto de Unicode. Por ejemplo, es válido codificar un documento XML en ASCII, pero ASCII carece de puntos de código para caracteres Unicode como "é".
  • Puede que no sea posible escribir el carácter en el ordenador del autor.
  • Algunos caracteres tienen glifos que no se pueden distinguir visualmente de otros caracteres, como el espacio de no separación ( &#xa0;) " " y el espacio ( &#x20;) " ", y la letra mayúscula cirílica A ( &#x410;) "А" y la letra mayúscula latina A ( &#x41;) "A".

Hay cinco entidades predefinidas :

  • &lt;representa " < ";
  • &gt;representa " > ";
  • &amp;representa "&";
  • &apos;representa " ' ";
  • &quot;representa ' " '.

Todos los caracteres Unicode permitidos pueden representarse con una referencia numérica de carácter . Consideremos el carácter chino "中", cuyo código numérico en Unicode es hexadecimal 4E2D, o decimal 20.013. Un usuario cuyo teclado no ofrece un método para introducir este carácter aún podría insertarlo en un documento XML codificado como &#20013;o &#x4e2d;. De manera similar, la cadena "I < 3 Jörg" podría codificarse para su inclusión en un documento XML como .I &lt;3 J&#xF6;rg

&#0;no está permitido porque el carácter nulo es uno de los caracteres de control excluidos de XML, incluso cuando se utiliza una referencia de carácter numérico. [ 19 ] Se necesita un mecanismo de codificación alternativo como Base64 para representar dichos caracteres.

Comentarios

Los comentarios pueden aparecer en cualquier parte de un documento fuera de otro marcado. Los comentarios no pueden aparecer antes de la declaración XML. Los comentarios comienzan con <!--y terminan con . Para compatibilidad con SGML , la cadena "--" (doble guion) no está permitida dentro de los comentarios; [ 20 ] esto significa que los comentarios no pueden anidarse. El ampersand no tiene un significado especial dentro de los comentarios, por lo que las referencias a entidades y caracteres no se reconocen como tales, y no hay forma de representar caracteres fuera del conjunto de caracteres de la codificación del documento.-->

Un ejemplo de comentario válido: <!--no need to escape <code>& such in comments-->

Uso internacional

XML 1.0 (Quinta Edición) y XML 1.1 admiten el uso directo de casi cualquier carácter Unicode en nombres de elementos, atributos, comentarios, datos de caracteres e instrucciones de procesamiento (excepto aquellos que tienen un significado simbólico especial en el propio XML, como el signo menor que, "<"). A continuación se muestra un documento XML bien formado que incluye caracteres chinos , armenios y cirílicos :

<?xml version="1.0" encoding="UTF-8"?> <俄语֥֦֬ւ = "ָּւ ֽ֥ր ֥ւ" > данные </俄语>

Corrección sintáctica y manejo de errores

La especificación XML define un documento XML como un texto bien formado , lo que significa que cumple con una lista de reglas de sintaxis proporcionadas en la especificación. Algunos puntos clave incluyen:

  • El documento contiene únicamente caracteres Unicode legales codificados correctamente.
  • Ninguno de los caracteres de sintaxis especiales, como <y , &aparece excepto cuando desempeñan sus funciones de delimitación de marcado.
  • Las etiquetas de inicio, fin y de elemento vacío que delimitan los elementos están correctamente anidadas, sin que falte ninguna ni se superponga ninguna.
  • Los nombres de las etiquetas distinguen entre mayúsculas y minúsculas; la etiqueta de inicio y la etiqueta de fin deben coincidir exactamente.
  • Los nombres de las etiquetas no pueden contener ninguno de los caracteres , ni un espacio, y no pueden comenzar con "-", ".", ni un dígito numérico.!"#$%&'()*+,/;<=>?@[\]^`{|}~
  • Un único elemento raíz contiene todos los demás elementos.

La definición de un documento XML excluye los textos que contienen violaciones de las reglas de buena formación; simplemente no son XML. Un procesador XML que encuentra tal violación está obligado a informar de tales errores y a detener el procesamiento normal. [ 21 ] [ 22 ] Esta política, a veces denominada " manejo de errores draconiano ", contrasta notablemente con el comportamiento de los programas que procesan HTML , los cuales están diseñados para producir un resultado razonable incluso en presencia de errores de marcado graves. [ 23 ] La política de XML en esta área ha sido criticada como una violación de la ley de Postel ("Sé conservador en lo que envías; sé liberal en lo que aceptas"). [ 24 ]

La especificación XML define un documento XML válido como un documento XML bien formado que también cumple con las reglas de una Definición de Tipo de Documento (DTD). [ 25 ]

Esquemas y validación

Además de estar bien formado, un documento XML puede ser válido . Esto significa que contiene una referencia a una Definición de Tipo de Documento (DTD) y que sus elementos y atributos están declarados en esa DTD y siguen las reglas gramaticales que especifica la DTD.

Los procesadores XML se clasifican como validadores o no validadores según si comprueban o no la validez de los documentos XML. [ 26 ] Un procesador que detecta un error de validez debe poder informarlo, pero puede continuar con el procesamiento normal.

Un DTD es un ejemplo de esquema o gramática . Desde la publicación inicial de XML 1.0, se ha trabajado intensamente en el campo de los lenguajes de esquema para XML. Estos lenguajes de esquema suelen restringir el conjunto de elementos que se pueden usar en un documento, los atributos que se les pueden aplicar, el orden en que pueden aparecer y las relaciones padre/hijo permitidas.

Definición del tipo de documento

El lenguaje de esquema más antiguo para XML es la definición de tipo de documento (DTD), heredada de SGML.

Los DTD ofrecen los siguientes beneficios:

  • La compatibilidad con DTD es omnipresente debido a su inclusión en el estándar XML 1.0.
  • Las DTD son concisas en comparación con los lenguajes de esquema basados ​​en elementos y, en consecuencia, presentan más información en una sola pantalla.
  • Las DTD permiten la declaración de conjuntos de entidades públicas estándar para la publicación de personajes.
  • Las DTD definen un tipo de documento en lugar de los tipos utilizados por un espacio de nombres, agrupando así todas las restricciones de un documento en una única colección.

Los DTD tienen las siguientes limitaciones:

  • No ofrecen soporte explícito para las características más recientes de XML, sobre todo para los espacios de nombres .
  • Carecen de expresividad. Las DTD XML son más simples que las DTD SGML y existen ciertas estructuras que no pueden expresarse con gramáticas regulares. Las DTD solo admiten tipos de datos rudimentarios.
  • Carecen de legibilidad. Los diseñadores de DTD suelen hacer un uso intensivo de entidades de parámetros (que se comportan esencialmente como macros textuales ), lo que facilita la definición de gramáticas complejas, pero a costa de la claridad.
  • Utilizan una sintaxis basada en expresiones regulares , heredada de SGML, para describir el esquema. Las API XML típicas, como SAX, no ofrecen a las aplicaciones una representación estructurada de la sintaxis, por lo que resulta menos accesible para los programadores que una sintaxis basada en elementos.

Dos características peculiares que distinguen a las DTD de otros tipos de esquemas son la compatibilidad sintáctica para incrustar una DTD dentro de documentos XML y para definir entidades , que son fragmentos arbitrarios de texto o marcado que el procesador XML inserta en la propia DTD y en el documento XML dondequiera que se haga referencia a ellas, como secuencias de escape de caracteres.

La tecnología DTD todavía se utiliza en muchas aplicaciones debido a su omnipresencia.

Esquema

Un lenguaje de esquema más reciente, descrito por el W3C como el sucesor de las DTD, es XML Schema , a menudo conocido por las siglas XSD (XML Schema Definition) para las instancias de XML Schema. Las XSD son mucho más potentes que las DTD para describir lenguajes XML. Utilizan un sistema de tipado de datos avanzado y permiten restricciones más detalladas en la estructura lógica de un documento XML. Además, las XSD utilizan un formato basado en XML, lo que permite usar herramientas XML convencionales para procesarlas.

Elemento xs:schema que define un esquema:

<?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" ></xs:schema>

RELAX NG

RELAX NG (Regular Language for XML Next Generation) fue especificado inicialmente por OASIS y ahora es un estándar (Parte 2: Validación basada en gramática regular de ISO/IEC 19757 – DSDL ). Los esquemas RELAX NG pueden escribirse tanto en una sintaxis basada en XML como en una sintaxis no XML más compacta; ambas sintaxis son isomorfas y la herramienta de conversión de James Clark , Trang , puede convertir entre ellas sin pérdida de información. RELAX NG tiene un marco de definición y validación más simple que XML Schema, lo que facilita su uso e implementación. También tiene la capacidad de usar complementos de marco de tipos de datos ; un autor de esquemas RELAX NG, por ejemplo, puede requerir que los valores en un documento XML se ajusten a las definiciones de los tipos de datos de XML Schema.

Esquema

Schematron es un lenguaje para realizar afirmaciones sobre la presencia o ausencia de patrones en un documento XML. Generalmente utiliza expresiones XPath . Schematron es ahora un estándar (Parte 3: Validación basada en reglas de ISO/IEC 19757 – DSDL ).

DSDL y otros lenguajes de esquema

DSDL (Document Schema Definition Languages) es un estándar ISO/IEC de varias partes (ISO/IEC 19757) que reúne un conjunto completo de lenguajes de esquema pequeños, cada uno dirigido a problemas específicos. DSDL incluye la sintaxis completa y compacta RELAX NG , el lenguaje de aserción Schematron y lenguajes para definir tipos de datos, restricciones de repertorio de caracteres, renombrado y expansión de entidades, y enrutamiento basado en espacios de nombres de fragmentos de documentos a diferentes validadores. Los lenguajes de esquema DSDL aún no cuentan con el soporte de proveedores de los esquemas XML y son, en cierta medida, una reacción espontánea de los editores industriales ante la falta de utilidad de los esquemas XML para la publicación .

Algunos lenguajes de esquema no solo describen la estructura de un formato XML específico, sino que también ofrecen funcionalidades limitadas para influir en el procesamiento de archivos XML individuales que se ajustan a dicho formato. Tanto los DTD como los XSD poseen esta capacidad; por ejemplo, pueden proporcionar la funcionalidad de ampliación de conjuntos de información y valores predeterminados para los atributos. RELAX NG y Schematron, por decisión propia, no ofrecen estas funcionalidades.

Se ha desarrollado un conjunto de especificaciones estrechamente relacionadas con XML, a partir de la publicación inicial de XML 1.0. Con frecuencia, el término "XML" se utiliza para referirse a XML junto con una o más de estas otras tecnologías que se consideran parte del núcleo de XML.

  • Los espacios de nombres XML permiten que un mismo documento contenga elementos y atributos XML de diferentes vocabularios, sin que se produzcan conflictos de nombres . Si bien los espacios de nombres XML no forman parte de la especificación XML propiamente dicha, prácticamente todo el software XML también los admite.
  • XML Base define el xml:baseatributo que se puede utilizar para establecer la base para la resolución de referencias URI relativas dentro del ámbito de un único elemento XML.
  • El conjunto de información XML ( o Infoset XML) es un modelo de datos abstracto para documentos XML en términos de elementos de información . El Infoset se usa comúnmente en las especificaciones de los lenguajes XML, para facilitar la descripción de las restricciones sobre las construcciones XML que permiten dichos lenguajes.
  • XSL (Extensible Stylesheet Language) es una familia de lenguajes utilizados para transformar y representar documentos XML, divididos en tres partes:
    • XSLT (Transformaciones XSL) es un lenguaje XML para transformar documentos XML en otros documentos XML o en otros formatos como HTML, texto plano o XSL-FO. XSLT está estrechamente integrado con XPath, que utiliza para acceder a los componentes del documento XML de entrada, principalmente elementos y atributos.
    • XSL-FO (XSL Formatting Objects), un lenguaje XML para la representación de documentos XML, que se utiliza a menudo para generar archivos PDF.
    • XPath (XML Path Language) es un lenguaje no XML para acceder a los componentes (elementos, atributos, etc.) de un documento XML. XPath se utiliza ampliamente en otras especificaciones XML básicas y en bibliotecas de programación para acceder a datos codificados en XML.
  • XQuery (XML Query) es un lenguaje de consulta XML con fuertes raíces en XPath y XML Schema. Proporciona métodos para acceder, manipular y devolver XML, y está concebido principalmente como un lenguaje de consulta para bases de datos XML .
  • XML Signature define la sintaxis y las reglas de procesamiento para crear firmas digitales en contenido XML.
  • El cifrado XML define la sintaxis y las reglas de procesamiento para cifrar el contenido XML.
  • El modelo XML (Parte 11: Asociación de esquemas de ISO/IEC 19757 – DSDL ) define un medio para asociar cualquier documento XML con cualquiera de los tipos de esquema mencionados anteriormente .

Otras especificaciones concebidas como parte del "Núcleo XML" no han logrado una amplia adopción, entre ellas XInclude , XLink y XPointer .

Interfaces de programación

Los objetivos de diseño de XML incluyen: «Debe ser fácil escribir programas que procesen documentos XML». [ 6 ] A pesar de esto, la especificación XML prácticamente no contiene información sobre cómo los programadores podrían realizar dicho procesamiento. La especificación XML Infoset proporciona un vocabulario para referirse a las construcciones dentro de un documento XML, pero no ofrece ninguna guía sobre cómo acceder a esta información. Se han desarrollado y utilizado diversas API para acceder a XML, y algunas se han estandarizado.

Las API existentes para el procesamiento de XML suelen clasificarse en estas categorías:

  • API orientadas a flujos de datos accesibles desde un lenguaje de programación, por ejemplo SAX y StAX .
  • API de recorrido de árboles accesibles desde un lenguaje de programación, por ejemplo DOM .
  • La vinculación de datos XML proporciona una traducción automatizada entre un documento XML y objetos de lenguajes de programación.
  • Lenguajes de transformación declarativos como XSLT y XQuery .
  • Extensiones de sintaxis para lenguajes de programación de propósito general, por ejemplo LINQ y Scala .

Las funcionalidades orientadas a flujos de datos requieren menos memoria y, para ciertas tareas basadas en el recorrido lineal de un documento XML, son más rápidas y sencillas que otras alternativas. Las API de recorrido de árbol y de enlace de datos suelen requerir mucha más memoria, pero a menudo resultan más prácticas para los programadores; algunas incluyen la recuperación declarativa de componentes del documento mediante expresiones XPath.

XSLT está diseñado para la descripción declarativa de transformaciones de documentos XML y se ha implementado ampliamente tanto en paquetes del lado del servidor como en navegadores web. XQuery comparte funcionalidad con XSLT, pero está más orientado a la búsqueda en grandes bases de datos XML .

API sencilla para XML

La API simple para XML (SAX) es una API léxica basada en eventos en la que un documento se lee secuencialmente y su contenido se reporta como llamadas a diversos métodos de un objeto controlador diseñado por el usuario. SAX es rápida y eficiente de implementar, pero difícil de usar para extraer información aleatoriamente del XML, ya que tiende a sobrecargar al desarrollador de la aplicación al tener que hacer un seguimiento de qué parte del documento se está procesando. Es más adecuada para situaciones en las que ciertos tipos de información siempre se manejan de la misma manera, independientemente de su ubicación en el documento.

Análisis de extracción

El análisis de extracción trata el documento como una serie de elementos leídos en secuencia utilizando el patrón de diseño iterador . Esto permite escribir analizadores descendentes recursivos en los que la estructura del código que realiza el análisis refleja la estructura del XML que se está analizando, y los resultados intermedios analizados se pueden usar y acceder como variables locales dentro de las funciones que realizan el análisis, o pasarse (como parámetros de función) a funciones de nivel inferior, o devolverse (como valores de retorno de función) a funciones de nivel superior. [ 27 ] Ejemplos de analizadores de extracción incluyen Data::Edit::Xmlen Perl , StAX en el lenguaje de programación Java , XMLPullParser en Smalltalk , XMLReader en PHP , ElementTree.iterparseen Python , SmartXML en Red , System.Xml.XmlReaderen el .NET Framework y la API de recorrido del DOM ( NodeIteratory TreeWalker).

Un analizador de extracción crea un iterador que visita secuencialmente los distintos elementos, atributos y datos de un documento XML. El código que utiliza este iterador puede comprobar el elemento actual (para determinar, por ejemplo, si se trata de una etiqueta de inicio o de cierre, o de texto), inspeccionar sus atributos (nombre local, espacio de nombres , valores de los atributos XML, valor del texto, etc.) y también mover el iterador al siguiente elemento. De este modo, el código puede extraer información del documento a medida que lo recorre. El enfoque de descenso recursivo tiende a facilitar el almacenamiento de datos como variables locales tipadas en el código que realiza el análisis, mientras que SAX, por ejemplo, normalmente requiere que un analizador mantenga manualmente los datos intermedios dentro de una pila de elementos que son elementos padre del elemento que se está analizando. El código de análisis de extracción puede ser más sencillo de entender y mantener que el código de análisis SAX.

Modelo de objetos de documento

El Modelo de Objetos del Documento ( DOM) es una interfaz que permite navegar por todo el documento como si fuera un árbol de objetos que representan su contenido. Un documento DOM puede ser creado por un analizador sintáctico o generado manualmente por el usuario (con ciertas limitaciones). Los tipos de datos en los nodos DOM son abstractos; las implementaciones proporcionan sus propias vinculaciones específicas del lenguaje de programación . Las implementaciones DOM suelen consumir mucha memoria , ya que generalmente requieren que todo el documento se cargue en memoria y se construya como un árbol de objetos antes de permitir el acceso.

Enlace de datos

El enlace de datos XML es una técnica para simplificar el desarrollo de aplicaciones que necesitan trabajar con documentos XML. Consiste en mapear el documento XML a una jerarquía de objetos fuertemente tipados, en lugar de utilizar los objetos genéricos creados por un analizador DOM. El código resultante suele ser más fácil de leer y mantener, y puede ayudar a identificar problemas en tiempo de compilación en lugar de en tiempo de ejecución. El enlace de datos XML es particularmente adecuado para aplicaciones donde la estructura del documento es conocida y fija en el momento de escribir la aplicación. Al crear una representación fuertemente tipada de los datos XML, los desarrolladores pueden aprovechar los entornos de desarrollo integrados (IDE) modernos que proporcionan características como autocompletado, refactorización de código y resaltado de código. Esto puede facilitar la escritura de código correcto y eficiente, y reducir el riesgo de errores y fallos. Ejemplos de sistemas de enlace de datos incluyen la arquitectura Java para enlace XML (JAXB), la serialización XML en .NET Framework [ 28 ] y la serialización XML en gSOAP .

XML como tipo de datos

XML ha aparecido como un tipo de datos de primera clase en otros lenguajes. La extensión ECMAScript para XML (E4X) del lenguaje ECMAScript /JavaScript define explícitamente dos objetos específicos (XML y XMLList) para JavaScript, que admiten nodos de documentos XML y listas de nodos XML como objetos distintos y utilizan una notación de punto que especifica relaciones padre-hijo. [ 29 ] E4X es compatible con los navegadores Mozilla 2.5+ (aunque ahora está obsoleto) y Adobe Actionscript , pero no ha sido ampliamente adoptado. Se utilizan notaciones similares en la implementación LINQ de Microsoft para Microsoft .NET 3.5 y superior, y en Scala (que utiliza la máquina virtual de Java). La aplicación de código abierto xmlsh, que proporciona un intérprete de comandos similar a Linux con características especiales para la manipulación de XML, trata de manera similar XML como un tipo de datos, utilizando la notación <[ ]>. [ 30 ] El Resource Description Framework define un tipo de datos para contener XML canónicordf:XMLLiteral encapsulado . [ 31 ] Facebook ha producido extensiones para los lenguajes PHP y JavaScript que agregan XML a la sintaxis principal de manera similar a E4X, a saber, XHP y JSX respectivamente.

Historia

XML es un perfil de aplicación de SGML (ISO 8879). [ 32 ]

La versatilidad de SGML para la visualización dinámica de información fue comprendida por los primeros editores de medios digitales a finales de la década de 1980, antes del auge de Internet. [ 22 ] [ 33 ] A mediados de la década de 1990, algunos profesionales de SGML habían adquirido experiencia con la entonces nueva World Wide Web y creían que SGML ofrecía soluciones a algunos de los problemas que probablemente enfrentaría la Web a medida que creciera. Dan Connolly añadió SGML a la lista de actividades del W3C cuando se unió al personal en 1995; el trabajo comenzó a mediados de 1996 cuando el ingeniero de Sun Microsystems , Jon Bosak, desarrolló un estatuto y reclutó colaboradores. Bosak estaba bien conectado en la pequeña comunidad de personas que tenían experiencia tanto en SGML como en la Web. [ 34 ]

XML fue compilado por un grupo de trabajo de once miembros, [ 35 ] apoyado por un Grupo de Interés de (aproximadamente) 150 miembros. El debate técnico tuvo lugar en la lista de correo del Grupo de Interés y los problemas se resolvieron por consenso o, cuando este falló, por votación mayoritaria del Grupo de Trabajo. Un registro de las decisiones de diseño y sus fundamentos fue compilado por Michael Sperberg-McQueen el 4 de diciembre de 1997. [ 36 ] James Clark se desempeñó como Líder Técnico del Grupo de Trabajo, contribuyendo notablemente con la sintaxis de elementos vacíos y el nombre "XML". Otros nombres que se habían propuesto para su consideración incluían "MAGMA" (Minimal Architecture for Generalized Markup Applications), "SLIM" (Structured Language for Internet Markup) y "MGML" (Minimal Generalized Markup Language). [ 37 ] Los coeditores de la especificación fueron originalmente Tim Bray y Michael Sperberg-McQueen . A mitad del proyecto, Bray aceptó un contrato de consultoría con Netscape , lo que provocó enérgicas protestas de Microsoft. Se le pidió temporalmente a Bray que renunciara a la dirección editorial. Esto generó una intensa disputa en el Grupo de Trabajo, que finalmente se resolvió con el nombramiento de Jean Paoli, de Microsoft , como tercer coeditor. [ 38 ]<empty />

El Grupo de Trabajo de XML se comunicaba principalmente por correo electrónico y teleconferencias semanales. Las principales decisiones de diseño se tomaron en un breve período de intenso trabajo entre agosto y noviembre de 1996, [ 39 ] cuando se publicó el primer borrador de trabajo de una especificación XML. [ 40 ] El trabajo de diseño continuó durante 1997, y XML 1.0 se convirtió en una recomendación del W3C el 10 de febrero de 1998.

Fuentes

XML es un perfil de un estándar ISO, SGML, y la mayor parte de XML proviene de SGML sin modificaciones. De SGML provienen la separación de estructuras lógicas y físicas (elementos y entidades), la disponibilidad de validación basada en gramática (DTD), la separación de datos y metadatos (elementos y atributos), el contenido mixto, la separación del procesamiento de la representación ( instrucciones de procesamiento ) y la sintaxis predeterminada de corchetes angulares. La declaración SGML fue eliminada; por lo tanto, XML tiene un conjunto fijo de delimitadores y adopta Unicode como conjunto de caracteres del documento .

Otras fuentes de tecnología para XML fueron la TEI (Text Encoding Initiative), que definió un perfil de SGML para su uso como "sintaxis de transferencia", y HTML . El proyecto ERCS (Extended Reference Concrete Syntax) del proyecto SPREAD (Standardization Project Regarding East Asian Documents) del grupo de expertos en procesamiento de documentos de China/Japón/Corea relacionado con ISO fue la base de las reglas de nomenclatura de XML 1.0; SPREAD también introdujo referencias numéricas hexadecimales de caracteres y el concepto de referencias para que estuvieran disponibles todos los caracteres Unicode. Para brindar un mejor soporte a ERCS, XML y HTML, el estándar SGML IS 8879 fue revisado en 1996 y 1998 con adaptaciones WebSGML.

Las ideas que surgieron durante la discusión y que son novedosas en XML incluyeron el algoritmo para la detección de codificación y el encabezado de codificación, el objetivo de la instrucción de procesamiento, el atributo xml:space y el nuevo delimitador de cierre para etiquetas de elementos vacíos. La noción de buena formación en contraposición a la validez (que permite el análisis sin un esquema) se formalizó por primera vez en XML, aunque se había implementado con éxito en el software de tecnología de libros electrónicos "Dynatext"; [ 41 ] el software del proyecto del Nuevo Diccionario de Inglés de Oxford de la Universidad de Waterloo; el procesador de texto RISP LISP SGML en Uniscope, Tokio; el sistema de hipertexto IADS del Comando de Misiles del Ejército de los EE. UU.; Mentor Graphics Context; Interleaf y Xerox Publishing System.

Versiones

1.0 y 1.1

La primera versión (XML 1.0) se definió inicialmente en 1998. Desde entonces, ha sufrido pequeñas revisiones, sin que se le haya asignado un nuevo número de versión, y actualmente se encuentra en su quinta edición, publicada el 26 de noviembre de 2008. Su uso está ampliamente extendido y sigue siendo recomendable para uso general.

La segunda versión (XML 1.1) se publicó inicialmente el 4 de febrero de 2004, el mismo día que la tercera edición de XML 1.0, [ 42 ] y actualmente se encuentra en su segunda edición, publicada el 16 de agosto de 2006. Contiene características (algunas controvertidas) que pretenden facilitar el uso de XML en ciertos casos. [ 43 ] Los principales cambios consisten en habilitar el uso de caracteres de fin de línea utilizados en plataformas EBCDIC y el uso de escrituras y caracteres ausentes en Unicode 3.2. XML 1.1 no está muy extendido y se recomienda su uso únicamente para quienes necesiten sus características específicas. [ 44 ]

Antes del lanzamiento de su quinta edición, XML 1.0 se diferenciaba de XML 1.1 por tener requisitos más estrictos para los caracteres disponibles para su uso en nombres de elementos y atributos e identificadores únicos: en las primeras cuatro ediciones de XML 1.0, los caracteres se enumeraban exclusivamente utilizando una versión específica del estándar Unicode (de Unicode 2.0 a Unicode 3.2). La quinta edición sustituye el mecanismo de XML 1.1, que es más a prueba de futuro pero reduce la redundancia . El enfoque adoptado en la quinta edición de XML 1.0 y en todas las ediciones de XML 1.1 es que solo ciertos caracteres están prohibidos en los nombres, y todo lo demás está permitido para acomodar caracteres de nombres adecuados en futuras versiones de Unicode. En la quinta edición, los nombres XML pueden contener caracteres de las escrituras balinesa , cham o fenicia, entre muchas otras agregadas a Unicode desde Unicode 3.2. [ 43 ]

Casi cualquier punto de código Unicode puede usarse en los datos de caracteres y valores de atributos de un documento XML 1.0/1.1, incluso si el carácter correspondiente al punto de código no está definido en la versión actual de Unicode. En los datos de caracteres y valores de atributos, XML 1.1 permite el uso de más caracteres de control que XML 1.0, pero, para mayor "robustez", la mayoría de los caracteres de control introducidos en XML 1.1 deben expresarse como referencias numéricas de caracteres (y #x7F a #x9F, que se permitían en XML 1.0, en XML 1.1 incluso deben expresarse como referencias numéricas de caracteres [ 43 ] ). Entre los caracteres de control admitidos en XML 1.1 hay dos códigos de salto de línea que deben tratarse como caracteres de espacio en blanco, que son los únicos códigos de control que se pueden escribir directamente.

2.0

Se ha hablado de un XML 2.0, aunque ninguna organización ha anunciado planes para trabajar en un proyecto de este tipo. XML-SW (SW por skunkworks ), escrito por uno de los desarrolladores originales de XML, [ 45 ] contiene algunas propuestas sobre cómo podría ser un XML 2.0, incluyendo la eliminación de DTD de la sintaxis, así como la integración de espacios de nombres XML , XML Base y XML Information Set en el estándar base.

MicroXML

En 2012, James Clark (líder técnico del Grupo de Trabajo XML) y John Cowan (editor de la especificación XML 1.1) formaron el Grupo Comunitario MicroXML dentro del W3C y publicaron MicroXML, una especificación para un subconjunto significativamente reducido de XML. [ 46 ] MicroXML proporciona una sintaxis central mucho más simple al eliminar muchas características del XML completo, como las declaraciones de tipo de documento y las secciones CDATA, [ 21 ] al tiempo que garantiza la validez del espacio de nombres XML al no permitir nombres que entren en conflicto con el prefijo del espacio de nombres.

XML binario

Debido a la verbosidad del XML textual, se han propuesto varios formatos binarios como representaciones compactas para XML: Fast Infoset , basado en ASN.1 , fue publicado como estándar internacional por la UIT-T en 2005 y posteriormente por la ISO . Efficient XML Interchange (EXI), un formato XML binario desarrollado originalmente por AgileDelta, fue adoptado como recomendación del W3C en 2011, con una segunda edición publicada en 2014.

Crítica

XML y sus extensiones han sido criticados con frecuencia por su verbosidad, complejidad y redundancia. [ 47 ]

La correspondencia entre el modelo de árbol básico de XML y los sistemas de tipos de lenguajes de programación o bases de datos puede resultar compleja, especialmente cuando XML se utiliza para intercambiar datos altamente estructurados entre aplicaciones, lo cual no era su objetivo principal de diseño. Sin embargo, los sistemas de enlace de datos XML permiten que las aplicaciones accedan a los datos XML directamente desde objetos que representan una estructura de datos en el lenguaje de programación utilizado, lo que garantiza la seguridad de tipos , en lugar de utilizar el DOM o SAX para recuperar datos de una representación directa del propio XML. Esto se logra mediante la creación automática de una correspondencia entre los elementos del esquema XML XSD del documento y los miembros de una clase que se representará en memoria.

Otras críticas intentan refutar la afirmación de que XML es un lenguaje autodescriptivo [ 48 ] (aunque la especificación XML en sí misma no hace tal afirmación).

JSON , YAML y las expresiones S se proponen con frecuencia como alternativas más sencillas (véase Comparación de formatos de serialización de datos ) [ 49 ] que se centran en representar datos altamente estructurados en lugar de documentos, que pueden contener tanto contenido altamente estructurado como relativamente no estructurado. Sin embargo, las especificaciones de esquema XML estandarizadas por el W3C ofrecen una gama más amplia de tipos de datos XSD estructurados en comparación con formatos de serialización más sencillos y ofrecen modularidad y reutilización a través de espacios de nombres XML .

Véase también

Notas

  1. Es decir, los caracteres de comillas incrustadas serían un problema.
  2. Un ejemplo común de esto sonlos nombres de clases o identificadores CSS .

Referencias

Citas

  1. Thompson, H.; Lilley, C. (julio de 2014). Tipos de medios XML . Grupo de trabajo de ingeniería de Internet. doi : 10.17487/RFC7303 . RFC 7303 .
  2. Bray et al. (2008) .
  3. Bray, T.; Paoli, J.; Sperberg-McQueen, CM, eds. (10 de febrero de 1998). "Lenguaje de marcado extensible (XML) 1.0" (Recomendación del W3C) (1.ª ed.). W3C. Archivado del original el 20 de abril de 2024. Recuperado el 31 de octubre de 2019 . 
  4. Bikakis, N.; Tsinaraki, C.; Gioldasis, N.; Stavrakantonakis, I.; Christodoulakis, S. (2013). "Los mundos de XML y la Web Semántica: Tecnologías, Interoperabilidad e Integración: Un Estudio del Estado del Arte" . En Anagnostopoulos, I.; Bieliková, M.; Mylonas, P.; Tsapatsoulis, N. (eds.). Adaptación Semántica Hiper/Multimedia: Esquemas y Aplicaciones . Estudios en Inteligencia Computacional. Vol. 418. Berlín: Springer. pp. 319–360 . doi : 10.1007/978-3-642-28977-4_12 . ISBN   978-3-642-28977-4.
  5. "Licencia de documento – versión 2015" . W3C . Consultado el 24 de julio de 2020 .
  6. ^ Bray y cols. (2008) , sección 1.1.
  7. Fennell, Philip (junio de 2013). «Extremos de XML» . XML London 2013 8: 80–86 . doi : 10.14337/XMLLondon13.Fennell01 (inactivo el 12 de julio de 2025). ISBN 978-0-9926471-0-0Archivado del original el 1 de marzo de 2023.{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )
  8. 1 2 Loshin, P.; Linthicum, D.; Giza, M. (octubre de 2021). "¿Qué es XML (Lenguaje de Marcado Extensible)?" . TechTarget WhatIs . Informa.
  9. Dykes (2005) , pág. 1.
  10. 1 2 Dykes (2005) , pág. 11.
  11. 1 2 Dykes (2005) , pág. 135.
  12. Cover, Robin (ed.). "Aplicaciones e iniciativas XML" . Páginas de portada XML . Archivado del original el 2 de mayo de 2024. Recuperado el 16 de noviembre de 2017 .
  13. Organización Meteorológica Mundial (OMM) (2023). Manual de códigos, Volumen I.3 – Códigos internacionales, Anexo II del Reglamento Técnico de la OMM, Parte D – Representaciones derivadas de modelos de datos (Manual). Documentos básicos n.º 2. Ginebra: OMM. pág. 272. ISBN  978-92-63-10306-2.
  14. ^ Bray y col. (2008) , sección 2.2.
  15. ^ Bray y col. (2006) , sección 2.2.
  16. Bray, T. (26 de abril de 2003). "Caracteres vs. Bytes" . Tbray.org . Archivado del original el 26 de octubre de 2007. Recuperado el 16 de noviembre de 2017 .
  17. Bray et al. (2008) , apéndice F.
  18. ^ Bray y col. (2008) , sección 2.3.
  19. Texin, Tex; Yergeau, François (6 de septiembre de 2003). "Preguntas frecuentes sobre internacionalización del W3C: HTML, XHTML, XML y códigos de control" . Internacionalización del W3C . W3C. Archivado del original el 13 de diciembre de 2018. Recuperado el 16 de noviembre de 2017 .
  20. ^ Bray y col. (2008) , sección 2.5.
  21. 1 2 Stührenberg, Maik (febrero de 2013). Quo vadis XML? Historia y posibles direcciones futuras del Lenguaje de Marcado Extensible . XML Prague 2013 (PDF) . Praga. págs. 141–162 . ISBN  978-80-260-3872-6.
  22. 1 2 Gray, Jim (1 de febrero de 2005). "Una conversación con Tim Bray: Buscando maneras de domar las vastas reservas de información del mundo" . ACM Queue . 3 (1): 20– 25. doi : 10.1145/1046931.1046941 . S2CID 23502115 . 
  23. Pilgrim, Mark (6 de agosto de 2010). HTML5: En funcionamiento: Sumérgete en el futuro del desarrollo web . O'Reilly. pág. 10. ISBN  978-1-4493-9966-5.
  24. "No hay excepciones a la Ley de Postel [ sumérgete en la marca ] " . DiveIntoMark.org . Archivado del original el 14 de mayo de 2011. Consultado el 22 de abril de 2013 .
  25. Harold y Means (2002) , pág. 29.
  26. Harold y Means (2002) , pág. 8.
  27. DuCharme, Bob. "¡Empuja, tira, siguiente!" . Xml.com . Archivado del original el 12 de mayo de 2008 . Recuperado el 16 de noviembre de 2017 .
  28. Obasanjo, Dare (30 de junio de 2006). "Serialización XML en .NET Framework" . Microsoft Developer Network . Consultado el 31 de julio de 2009 .
  29. "Procesamiento de XML con E4X" . Centro de desarrolladores de Mozilla . Fundación Mozilla. Archivado del original el 1 de mayo de 2011. Consultado el 27 de julio de 2010 .
  30. "XML Shell: Sintaxis básica" . Xmlsh.org . 13 de mayo de 2010. Archivado del original el 3 de mayo de 2010. Consultado el 22 de agosto de 2010 .
  31. Klyne, G.; Carroll, JJ, eds. (10 de febrero de 2004). "Resource Description Framework (RDF): Concepts and Abstract Syntax" (Recomendación del W3C) . W3C. sección 5.1.
  32. "ISO/IEC 19757-3" (PDF) . ISO / IEC . 1 de junio de 2006. pág. vi . Consultado el 1 de enero de 2025 . 
  33. Ambron, Sueann y Hooper, Kristina, eds. (1988). «Editores, multimedia e interactividad». Multimedia interactiva . Cobb Group. ISBN 1-55615-124-1.
  34. Kimber, W. Eliot (26 de noviembre de 2006). "XML: décimo aniversario" . Dr. Macro's XML Rants . Consultado el 16 de noviembre de 2017 .
  35. El grupo de trabajo se llamaba originalmente "Consejo de Revisión Editorial". Los miembros originales y siete que se añadieron antes de que se completara la primera edición, aparecen listados al final de la primera edición de la Recomendación XML ( Bray, Paoli y Sperberg-McQueen 1998 ) .
  36. Sperberg-McQueen, CM, ed. (4 de diciembre de 1997). "Informes del W3C SGML ERB al SGML WG y del W3C XML ERB al XML SIG" . W3C . Consultado el 31 de julio de 2009 .
  37. Warwick, C.; Pritchard, E. (2000). "Lenguaje de marcado de texto "exagerado". XML y el futuro del marcado web" . Actas de ASLIB . 52 (5): 174– 184. doi : 10.1108/EUM0000000007012 .
  38. Manchester, P. (15 de febrero de 2008). "Bray retira al equipo XML" . The Register .
  39. Bosak, Jon (12 de abril de 2003). "El nacimiento de XML" . Sun Developer Network . Archivado del original el 4 de agosto de 2012. Recuperado el 16 de noviembre de 2017 .
  40. Bray, T.; Sperberg-McQueen, CM, eds. (14 de noviembre de 1996). "Lenguaje de marcado extensible (XML)" (borrador de trabajo del W3C) . W3C . Consultado el 31 de julio de 2009 .
  41. Bosak, Jon (12 de julio de 2006). Discurso de clausura . XML 2006. Archivado del original el 11 de julio de 2007. Recuperado el 31 de julio de 2009 .
  42. Bray, T.; Paoli, J.; Sperberg-McQueen, CM; Maler, E.; Yergeau, F, eds. (4 de febrero de 2004). "Lenguaje de marcado extensible (XML) 1.0" (Recomendación del W3C) (3.ª ed.). W3C. 
  43. ^ Bray y cols . (2006) , sección 1.3.
  44. Harold, Elliotte Rusty (2004). XML eficaz . Addison-Wesley. págs. 10–19 . ISBN  0-321-15040-6.
  45. Bray, Tim (10 de febrero de 2002). "Lenguaje de marcado extensible, SW (XML-SW)" . Textuality .
  46. "Grupo de la comunidad MicroXML" . W3C . 1 de octubre de 2012. Consultado el 5 de agosto de 2023 .
  47. "XML: El impuesto de los corchetes angulares" . Codinghorror.com . 11 de mayo de 2008. Archivado del original el 26 de febrero de 2014. Consultado el 16 de noviembre de 2017 .
  48. "El mito del XML autodescriptivo" (PDF) . Workflow.HealthBase.info . Septiembre de 2003. Consultado el 16 de noviembre de 2017 .
  49. "¿Qué alternativas utilizables a la sintaxis XML conoces?" . StackOverflow.com . Consultado el 16 de noviembre de 2017 .

Bibliografía

  • Bray, T.; Paoli, J.; Sperberg-McQueen, CM; Maler, E.; Yergeau, F, eds. (26 de noviembre de 2008). "Lenguaje de marcado extensible (XML) 1.0" (Recomendación del W3C) (5.ª  ed.). W3C. Archivado del original el 22 de marzo de 2020. Recuperado el 3 de junio de 2024 .
  • Bray, T.; Paoli, J.; Sperberg-McQueen, CM; Maler, E.; Yergeau, F; Cowan, J., eds. (16 de agosto de 2006). "Lenguaje de marcado extensible (XML) 1.1" (Recomendación del W3C) (2.ª  ed.). W3C. Archivado del original el 5 de abril de 2025. Recuperado el 4 de marzo de 2025 .
  • Dykes, Lucinda (2005). XML para principiantes (4.ª  ed.). Hoboken, NJ: Wiley. ISBN 978-0-7645-8845-7.
  • Harold, ER; Means, WS (2002). XML en pocas palabras (2.ª  ed.). Sebastopol, CA: O'Reilly. ISBN 978-0-5960-0292-3.

Lecturas adicionales

  • Anexo A de la norma ISO 8879:1986 (SGML)
  • Cunningham, LA (2005). "Lenguaje, acuerdos y estándares: el futuro de los contratos XML". Washington University Law Review . 84 (2): 313– 373. SSRN 900616 . 
  • Bosak, Jon; Bray, Tim (mayo de 1999). "XML y la Web de Segunda Generación" . Scientific American . 280 (5): 89. Bibcode : 1999SciAm.280e..89B . doi : 10.1038/scientificamerican0599-89 (inactivo el 12 de julio de 2025). Archivado del original el 1 de octubre de 2009.{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )
  • Kelly, Sean (6 de febrero de 2006). "Cometiendo errores con XML" . Developer.com . Archivado del original el 13 de abril de 2021.
  • St. Laurent, Simon (12 de febrero de 2003). "Cinco años después, XML". Blog XML de O'Reilly . O'Reilly Media . Archivado del original el 3 de diciembre de 2013. Recuperado el 26 de octubre de 2010 .
  • "¡W3C XML cumple diez años!" . Consorcio World Wide Web . 12 de febrero de 2008. Archivado del original el 12 de febrero de 2022. Consultado el 26 de octubre de 2010 .
  • Ginebra, Pierre (octubre de 2012). "Introducción a XML" (PDF) . Diapositivas del curso . Proyecto WAM. Archivado (PDF) del original el 16 de octubre de 2015.
  • Sitio web oficial del Consorcio World Wide Web (W3C).
  • Especificación XML 1.0
  • Retrospectiva sobre la sintaxis concreta de referencia extendida. Archivado el 18 de noviembre de 2019 en Wayback Machine por Rick Jelliffe.
  • XML, Java y el futuro de la web (1997) por Jon Bosak
  • Servicio oficial de validación de marcado (W3C)
  • Las preguntas frecuentes sobre XML, originalmente creadas por Peter Flynn para el Grupo de Interés Especial en XML del W3C.