stringtranslate.com

XML

El lenguaje de marcado extensible ( XML ) es un lenguaje de marcado y formato de archivo para almacenar, transmitir y reconstruir datos arbitrarios. Define un conjunto de reglas para codificar documentos en un formato que sea legible tanto por humanos como por máquinas . La especificación XML 1.0 del World Wide Web Consortium [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 fuerte soporte a través de Unicode para diferentes lenguajes humanos . Aunque el diseño de XML se centra en documentos, el lenguaje es ampliamente utilizado para la representación de estructuras de datos arbitrarias [7] como las utilizadas en servicios web .

Existen varios sistemas de esquemas para ayudar en la definición de lenguajes basados ​​en XML, mientras que los programadores han desarrollado muchas interfaces de programación de aplicaciones (API) para ayudar en 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, deben acordar un formato de archivo. XML estandariza este proceso. Por tanto, es análogo a una lengua franca para representar información. [8] : 1 

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

IETF RFC 7303 (que reemplaza al antiguo RFC 3023) 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 formato sin exponer su semántica interna . RFC 7303 recomienda además que a los lenguajes basados ​​en XML se les proporcionen tipos de medios que terminen en +xml, por ejemplo, image/svg+xmlpara SVG .

En RFC 3470, también conocido como IETF BCP 70, un documento que cubre muchos aspectos del diseño e implementación de un lenguaje basado en XML, aparecen pautas adicionales para el uso de XML en un contexto de red.

Aplicaciones

XML se ha vuelto de uso común para el intercambio de datos a través de Internet. Se han desarrollado cientos de formatos de documentos que utilizan sintaxis XML, [9] incluidos 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 asincrónica de JavaScript y XML (AJAX) .

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

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 diario.

Personaje
Un documento XML es una cadena de caracteres . Todos los caracteres Unicode legales (excepto Nulo) pueden aparecer en un documento XML (1.1) (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 impone requisitos sobre lo que un procesador XML debe hacer y no hacer, pero la aplicación está fuera de su alcance. El procesador (como lo llama la especificación) a menudo se denomina coloquialmente analizador XML .
Marcado y contenido
Los caracteres que componen un documento XML se dividen en marcado y contenido , que pueden distinguirse mediante la aplicación de reglas sintácticas simples . Generalmente, las cadenas que constituyen marcado comienzan con el carácter <y terminan con >, o comienzan con el carácter &y terminan con ;. Las cadenas de caracteres que no están marcadas son contenido. Sin embargo, en una sección CDATA , los delimitadores <![CDATA[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 <y termina con >. Hay tres tipos de etiquetas:
  • etiqueta de inicio , como por ejemplo <section>;
  • etiqueta final , como </section>;
  • etiqueta de elemento vacío , como <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 finalización coincidente o que consta únicamente de una etiqueta de elemento vacío. Los caracteres entre la etiqueta inicial y la etiqueta final, si los hay, son el contenido del elemento y pueden contener marcas, incluidos otros elementos, que se denominan elementos secundarios . Un ejemplo es <greeting>Hello, world!</greeting>. Otro es <line-break />.
Atributo
Un atributo es una construcción de marcado que consta de un par nombre-valor que existe dentro de una etiqueta de inicio o 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 <step number="3">Connect A to B.</step>donde el nombre del atributo es "número" y su valor es "3". Un atributo XML solo puede tener un valor único 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 se debe hacer codificando la lista en un atributo XML [i] bien formado con algún formato más allá de lo que XML se define a 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. <div class="inner greeting-box">Welcome!</div>, donde el atributo "clase" tiene el valor "cuadro de saludo interno" y también indica los dos nombres de clase CSS "interior" y "cuadro de saludo".
declaración XML
Los documentos XML pueden comenzar con una declaración XML que describe cierta información sobre ellos mismos. Un ejemplo es <?xml version="1.0" encoding="UTF-8"?>.

Personajes y escape

Los documentos XML constan íntegramente de caracteres del repertorio Unicode . Excepto por una pequeña cantidad de caracteres de control específicamente excluidos , cualquier carácter definido por Unicode puede aparecer dentro del 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 utilizar directamente.

Caracteres válidos

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

XML 1.1 amplía el conjunto de caracteres permitidos para incluir todo lo anterior, más los caracteres restantes en el rango U+0001–U+001F. [11] Sin embargo, al mismo tiempo, restringe el uso de caracteres de control C0 y C1 distintos de U+0009 (pestaña horizontal), U+000A (avance de línea), U+000D (retorno de carro) y U+0085. (Siguiente línea) exigiendo 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 hacia atrás; 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 formas, denominadas "codificaciones". El propio Unicode define codificaciones que cubren todo el repertorio; los más conocidos incluyen UTF-8 (que el estándar XML recomienda usar, sin una lista de materiales ) y UTF-16 . [12] Hay 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 manera confiable, sin ningún conocimiento previo, qué codificación se está utilizando. [13] 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 funciones de escape para incluir caracteres que resulta problemático incluir directamente. Por ejemplo:

Hay cinco entidades predefinidas :

Todos los caracteres Unicode permitidos pueden representarse con una referencia de carácter numérico . Considere el carácter chino "中", cuyo código numérico en Unicode es hexadecimal 4E2D, o decimal 20.013. Un usuario cuyo teclado no ofrezca ningún método para ingresar 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 incluirse 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. [15] 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 otras marcas. Los comentarios no pueden aparecer antes de la declaración XML. Los comentarios comienzan con <!--y terminan con -->. Por compatibilidad con SGML , la cadena "--" (guión doble) no está permitida dentro de los comentarios; [16] esto significa que los comentarios no se pueden anidar. El signo comercial 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 un 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 (aparte de los que tienen un significado simbólico especial en el propio XML, como los menos -que signo, "<"). El siguiente es un documento XML bien formado que incluye caracteres chinos , armenios y cirílicos :

<?xml versión="1.0" codificación="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 satisface una lista de reglas de sintaxis proporcionadas en la especificación. Algunos puntos clave en la lista bastante larga incluyen:

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 encuentre una violación de este tipo debe informar dichos errores y detener el procesamiento normal. Esta política, a veces denominada " manejo draconiano de errores", contrasta notablemente con el comportamiento de los programas que procesan HTML , que están diseñados para producir un resultado razonable incluso en presencia de errores graves de marcado. [17] 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"). [18]

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). [19] [20]

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 para ellos que la DTD especifica.

Los procesadores XML se clasifican como con validación o sin validación dependiendo de si verifican o no la validez de los documentos XML. Un procesador que descubre un error de validez debe poder informarlo, pero puede continuar con el procesamiento normal.

Una DTD es un ejemplo de esquema o gramática . Desde la publicación inicial de XML 1.0, se ha realizado un trabajo sustancial en el área de lenguajes de esquemas para XML. Estos lenguajes de esquema normalmente limitan el conjunto de elementos que pueden usarse en un documento, qué atributos se les pueden aplicar, el orden en que pueden aparecer y las relaciones padre/hijo permitidas.

Definición de 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 tienen los siguientes beneficios:

Los DTD tienen las siguientes limitaciones:

Dos características peculiares que distinguen a las DTD de otros tipos de esquemas son el soporte sintáctico para incrustar una DTD dentro de documentos XML y para definir entidades , que son fragmentos arbitrarios de texto o marcas que el procesador XML inserta en la propia DTD y en el documento XML dondequiera que se encuentren. Se hace referencia a ellos, como escapes de personajes.

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

Esquema

Un lenguaje de esquema más nuevo, descrito por el W3C como el sucesor de las DTD, es el esquema XML , al que a menudo se hace referencia con las iniciales de las instancias de esquema XML, XSD (definición de esquema XML). Los XSD son mucho más potentes que los DTD a la hora de describir lenguajes XML. Utilizan un rico sistema de tipificación de datos y permiten restricciones más detalladas en la estructura lógica de un documento XML. Los XSD también utilizan un formato basado en XML, lo que permite utilizar herramientas XML ordinarias para ayudar a procesarlos.

xs:elemento esquema que define un esquema:

<?xml versión="1.0" codificación="UTF-8" ?> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" >>xs:schema> 

RELAJARSE

RELAX NG (Lenguaje regular para XML de próxima generación) 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 se pueden escribir en una sintaxis basada en XML o en una sintaxis no XML más compacta; las dos 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 lo hace más fácil de usar e implementar. También tiene la capacidad de utilizar complementos de marco de tipo de datos ; un autor de esquema RELAX NG, por ejemplo, puede requerir que los valores de un documento XML se ajusten a las definiciones de los tipos de datos de esquema XML.

Esquematrón

Schematron es un lenguaje para hacer afirmaciones sobre la presencia o ausencia de patrones en un documento XML. Normalmente 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 (lenguajes de definición de esquemas de documentos) es un estándar ISO/IEC de varias partes (ISO/IEC 19757) que reúne un conjunto completo de lenguajes de esquemas pequeños, cada uno de los cuales está dirigido a problemas específicos. DSDL incluye sintaxis completa y compacta RELAX NG , lenguaje de aserción Schematron y lenguajes para definir tipos de datos, restricciones de repertorio de caracteres, cambio de nombre y expansión de entidades, y enrutamiento de fragmentos de documentos basado en espacios de nombres a diferentes validadores. Los lenguajes de esquema DSDL aún no cuentan con el soporte de los proveedores para los esquemas XML y, hasta cierto punto, son una reacción popular de los editores industriales ante la falta de utilidad de los esquemas XML para la publicación .

Algunos lenguajes de esquema no sólo describen la estructura de un formato XML particular sino que también ofrecen funciones limitadas para influir en el procesamiento de archivos XML individuales que se ajustan a este formato. Tanto los DTD como los XSD tienen esta capacidad; pueden, por ejemplo, proporcionar la función de aumento del conjunto de información y valores predeterminados de atributos. RELAX NG y Schematron no los proporcionan intencionadamente.

Especificaciones relacionadas

Se ha desarrollado un conjunto de especificaciones estrechamente relacionadas con XML, poco después de la publicación inicial de XML 1.0. Es frecuente que el término "XML" se utilice para referirse a XML junto con una o más de estas otras tecnologías que se han llegado a considerar parte del núcleo XML.

Algunas otras especificaciones concebidas como parte del "XML Core" no han logrado una amplia adopción, incluidas XInclude , XLink y XPointer .

Interfaces de programación

Los objetivos de diseño de XML incluyen: "Será fácil escribir programas que procesen documentos XML". [6] A pesar de esto, la especificación XML casi no contiene información sobre cómo los programadores podrían realizar dicho procesamiento. La especificación XML Infoset proporciona un vocabulario para hacer referencia a las construcciones dentro de un documento XML, pero no proporciona 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 XML tienden a clasificarse en estas categorías:

Las funciones orientadas a flujos requieren menos memoria y, para ciertas tareas basadas en un recorrido lineal de un documento XML, son más rápidas y simples que otras alternativas. Las API de recorrido de árboles y de enlace de datos generalmente requieren el uso de mucha más memoria, pero a menudo resultan más convenientes para los programadores; algunos incluyen la recuperación declarativa de componentes del documento mediante el uso de 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 se superpone a XSLT en su funcionalidad, pero está diseñado más para buscar en grandes bases de datos XML .

API sencilla para XML

API simple para XML (SAX) es una API léxica basada en eventos en la que un documento se lee en serie y su contenido se informa como devoluciones de llamada a varios métodos en un objeto controlador diseñado por el usuario. SAX es rápido y eficiente de implementar, pero difícil de usar para extraer información aleatoria del XML, ya que tiende a sobrecargar al autor de la aplicación con la tarea de realizar un seguimiento de qué parte del documento se está procesando. Es más adecuado para situaciones en las que ciertos tipos de información siempre se manejan de la misma manera, sin importar dónde aparezcan 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 del iterador . Esto permite escribir analizadores de descenso 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 transmitirse ( como parámetros de función) en funciones de nivel inferior, o devueltos (como valores de retorno de función) a funciones de nivel superior. [21] Ejemplos de analizadores de extracción incluyen Data::Edit::Xml en Perl , StAX en el lenguaje de programación Java , XMLPullParser en Smalltalk , XMLReader en PHP , ElementTree.iterparse en Python , System.Xml.XmlReader en .NET Framework , y la API transversal DOM (NodeIterator y 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 probar el elemento actual (para saber, por ejemplo, si es una etiqueta de inicio o de finalización, o texto) e inspeccionar sus atributos (nombre local, espacio de nombres , valores de atributos XML, valor de texto, etc.) y también puede mover el iterador al siguiente elemento. De este modo, el código puede extraer información del documento a medida que lo atraviesa. El enfoque de descenso recursivo tiende a prestarse a mantener los datos como variables locales escritas en el código que realiza el análisis, mientras que SAX, por ejemplo, normalmente requiere un analizador para mantener manualmente los datos intermedios dentro de una pila de elementos que son elementos principales del elemento. siendo analizado. El código de análisis pull 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 de documento (DOM) es una API que permite la navegación por todo el documento como si fuera un árbol de objetos de nodo que representan el contenido del documento. Un documento DOM puede ser creado por un analizador o los usuarios pueden generarlo manualmente (con limitaciones). Los tipos de datos en los nodos DOM son abstractos; Las implementaciones proporcionan sus propios enlaces específicos del lenguaje de programación . Las implementaciones DOM tienden a consumir mucha memoria , ya que generalmente requieren que todo el documento se cargue en la memoria y se construya como un árbol de objetos antes de que se permita el acceso.

El enlace de datos

El enlace de datos XML es una técnica para simplificar el desarrollo de aplicaciones que necesitan trabajar con documentos XML. Implica asignar 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 se conoce y se fija en el momento en que se escribe 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 brindan funciones como autocompletar, 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 fallas. Los sistemas de enlace de datos de ejemplo incluyen la arquitectura Java para enlace XML (JAXB), la serialización XML en .NET Framework , [22] 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 puntos que especifica las relaciones padre-hijo. . [23] E4X es compatible con los navegadores Mozilla 2.5+ (aunque ahora está en desuso) y Adobe Actionscript , pero no ha sido adoptado ampliamente. Se utilizan notaciones similares en la implementación LINQ de Microsoft para Microsoft .NET 3.5 y superiores, y en Scala (que utiliza Java VM). La aplicación xmlsh de código abierto, que proporciona un shell similar a Linux con características especiales para la manipulación de XML, trata de manera similar a XML como un tipo de datos, utilizando la notación <[ ]>. [24] El Marco de descripción de recursos define un tipo de datos rdf:XMLLiteralpara contener XML canónico y empaquetado . [25] Facebook ha producido extensiones para los lenguajes PHP y JavaScript que agregan XML a la sintaxis central de manera similar a E4X, es decir, XHP y JSX respectivamente.

Historia

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

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 surgimiento de Internet. [27] [28] A mediados de la década de 1990, algunos practicantes 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 la Web probablemente enfrentaría 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. [29]

XML fue compilado por un grupo de trabajo de once miembros, [30] 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 eso falló, por mayoría de votos del Grupo de Trabajo. Michael Sperberg-McQueen compiló un registro de las decisiones de diseño y sus fundamentos el 4 de diciembre de 1997. [31] James Clark se desempeñó como líder técnico del grupo de trabajo, contribuyendo notablemente con la <empty />sintaxis de elementos vacíos y el nombre "XML". Otros nombres que se habían propuesto para su consideración incluían "MAGMA" (Arquitectura mínima para aplicaciones de marcado generalizado), "SLIM" (Lenguaje estructurado para marcado de Internet) y "MGML" (Lenguaje de marcado generalizado mínimo). 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ó ruidosas protestas por parte de Microsoft. A Bray se le pidió temporalmente que renunciara a la dirección editorial. Esto dio lugar a una intensa disputa en el Grupo de Trabajo, que finalmente se resolvió con el nombramiento de Jean Paoli de Microsoft como tercer coeditor.

El Grupo de Trabajo XML se comunicó principalmente a través de 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, [32] cuando se publicó el primer borrador de trabajo de una especificación XML. [33] 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 SGML estándar ISO y la mayor parte de XML proviene de SGML sin cambios. De SGML proviene 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), contenido mixto, la separación del procesamiento de la representación ( procesamiento instrucciones ) y la sintaxis predeterminada de corchetes angulares. Se eliminó la declaración SGML; por lo tanto, XML tiene un conjunto de delimitadores fijos 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 (Sintaxis concreta de referencia extendida) del proyecto SPREAD (Proyecto de estandarización sobre documentos de Asia oriental) del grupo de expertos en procesamiento de documentos de China, Japón y Corea relacionado con ISO fue la base de las reglas de nomenclatura de XML 1.0; SPREAD también introdujo referencias de caracteres numéricos hexadecimales y el concepto de referencias para que todos los caracteres Unicode estén disponibles. Para soportar mejor ERCS, XML y HTML, el estándar SGML IS 8879 fue revisado en 1996 y 1998 con adaptaciones WebSGML.

Las ideas que se desarrollaron 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 bien formado 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 "Dynatext" de tecnología de libros electrónicos; [34] el software del Proyecto New Oxford English Dictionary 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 EE. UU.; Contexto de gráficos del mentor; Sistema de publicación Interleaf y Xerox.

Versiones

1.0 y 1.1

El primero (XML 1.0) se definió inicialmente en 1998. Desde entonces ha sufrido revisiones menores, 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. Está ampliamente implementado y aún Recomendado para uso general.

El segundo (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, [35] y actualmente se encuentra en su segunda edición, publicada el 16 de agosto de 2006. Contiene características (algunas polémicas) que están destinados a hacer que XML sea más fácil de usar en ciertos casos. [36] Los principales cambios son permitir el uso de caracteres de final de línea utilizados en las plataformas EBCDIC y el uso de scripts y caracteres ausentes en Unicode 3.2. XML 1.1 no está muy implementado y se recomienda su uso sólo para aquellos que necesitan sus características particulares. [37]

Antes 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 (Unicode 2.0 a Unicode 3.2.) La quinta edición sustituye el mecanismo de XML 1.1, que está más preparado para el 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 sólo ciertos caracteres están prohibidos en los nombres, y todo lo demás está permitido para acomodar caracteres de nombre adecuados en futuras versiones Unicode. En la quinta edición, los nombres XML pueden contener caracteres en escritura balinesa , cham o fenicia , entre muchas otras agregadas a Unicode desde Unicode 3.2. [36]

Casi cualquier punto de código Unicode se puede utilizar 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 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 de caracteres numéricos (y #x7F a #x9F , que se permitían en XML 1.0, en XML 1.1 incluso se requiere que se expresen como referencias de caracteres numéricos [38] ). Entre los caracteres de control admitidos en XML 1.1 se encuentran 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 debatido sobre un XML 2.0, aunque ninguna organización ha anunciado planes para trabajar en dicho proyecto. XML-SW (SW para skunkworks ), escrito por uno de los desarrolladores originales de XML, [39] contiene algunas propuestas sobre cómo podría verse un XML 2.0, incluida la eliminación de DTD de la sintaxis, así como la integración de espacios de nombres XML . Base XML e información XML establecida en el estándar base.

MicroXML

En 2012, James Clark (director 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 una especificación para un subconjunto significativamente reducido de XML. [40]

XML binario

El Consorcio World Wide Web también cuenta con un Grupo de Trabajo de Caracterización Binaria XML que realiza investigaciones preliminares sobre casos de uso y propiedades para una codificación binaria de un conjunto de información XML. El grupo de trabajo no está autorizado para producir normas oficiales. Dado que XML, por definición, está basado en texto, el UIT-T y la ISO utilizan el nombre Fast Infoset para su propio formato binario (Rec. UIT-T X.891 e ISO/CEI 24824-1) para evitar confusiones.

Crítica

XML y sus extensiones han sido criticados regularmente por su verbosidad, complejidad y redundancia. [41]

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

Otras críticas intentan refutar la afirmación de que XML es un lenguaje de autodescripción [42] (aunque la especificación XML en sí no afirma tal afirmación).

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

Ver también

Notas

  1. ^ es decir, las comillas incrustadas serían un problema
  2. ^ Un ejemplo común de esto son los nombres de identificadores o clases CSS .

Referencias

  1. ^ "Tipos de medios XML, RFC 7303". Grupo de Trabajo de Ingeniería de Internet. Julio de 2014.
  2. ^ "Lenguaje de marcado extensible (XML) 1.0 (quinta edición)". Consorcio Mundial de la red. 26 de noviembre de 2008 . Consultado el 22 de agosto de 2010 .
  3. ^ "Extensible Markup Language (XML) 1.0". W3C. 10 February 1998.
  4. ^ "XML and Semantic Web W3C Standards Timeline" (PDF). Database and Knowledge Systems Lab. Archived from the original (PDF) on 24 April 2013. Retrieved 14 August 2016.
  5. ^ "Document license - 2015 version". W3C. Retrieved 24 July 2020.
  6. ^ a b "1.0 Origin and Goals". Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C. 26 November 2008. Retrieved 14 August 2016.
  7. ^ Fennell, Philip (June 2013). "Extremes of XML". XML London 2013: 80–86. doi:10.14337/XMLLondon13.Fennell01. ISBN 978-0-9926471-0-0. Archived from the original on Mar 1, 2023.
  8. ^ a b c d e Dykes, Lucinda (2005). XML for Dummies (4th ed.). Hoboken, N.J.: Wiley. ISBN 978-0-7645-8845-7.
  9. ^ "XML Applications and Initiatives". Xml.coverages.org. Retrieved 16 November 2017.
  10. ^ "Characters". Extensible Markup Language (XML) 1.0 (Fifth Edition). World Wide Web Consortium. 2008-11-26. Retrieved 23 November 2012.
  11. ^ "Characters". Extensible Markup Language (XML) 1.1 (Second Edition). World Wide Web Consortium. 16 August 2006. Retrieved 22 August 2010.
  12. ^ "Characters vs. Bytes". Tbray.org. April 26, 2003. Retrieved 16 November 2017.
  13. ^ "Autodetection of Character Encodings (Non-Normative)". Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C. 26 November 2008. Retrieved 16 November 2017.
  14. ^ "Extensible Markup Language (XML) 1.0 (Fifth Edition)". W3C. Retrieved 16 November 2017.
  15. ^ "W3C I18N FAQ: HTML, XHTML, XML and Control Codes". W3C. Retrieved 16 November 2017.
  16. ^ "Extensible Markup Language (XML)". W3C. Retrieved 16 November 2017. Section "Comments"
  17. ^ Peregrino, Mark (2004). "La historia del manejo draconiano de errores en XML". Archivado desde el original el 26 de julio de 2011 . Consultado el 18 de julio de 2013 .
  18. ^ "No hay excepciones a la ley de Postel [sumérjase en la marca]". DiveIntoMark.org . Archivado desde el original el 14 de mayo de 2011 . Consultado el 22 de abril de 2013 .
  19. ^ "Bloc de notas XML". Xmlnotepad/codeplex.com . Archivado desde el original el 15 de noviembre de 2017 . Consultado el 16 de noviembre de 2017 .
  20. ^ "Bloc de notas XML 2007". Microsoft . Consultado el 16 de noviembre de 2017 .
  21. ^ DuCharme, Bob. "¡Empuja, tira, siguiente!". XML.com . Consultado el 16 de noviembre de 2017 .
  22. ^ "Serialización XML en .NET Framework". msdn.microsoft.com . 30 de junio de 2006 . Consultado el 31 de julio de 2009 .
  23. ^ "Procesamiento de XML con E4X". Centro de desarrolladores de Mozilla . Fundación Mozilla. Archivado desde el original el 1 de mayo de 2011 . Consultado el 27 de julio de 2010 .
  24. ^ "XML Shell: sintaxis principal". XMLSH.org . 2010-05-13 . Consultado el 22 de agosto de 2010 .
  25. ^ "Marco de descripción de recursos (RDF): conceptos y sintaxis abstracta". W3C . Consultado el 22 de agosto de 2010 .
  26. ^ "ISO/CEI 19757-3". ISO / IEC . 1 de junio de 2006: vi. {{cite journal}}: Citar diario requiere |journal=( ayuda )
  27. ^ Bray, Tim (febrero de 2005). "Una conversación con Tim Bray: buscando formas de controlar las vastas reservas de información del mundo". "Sitio de cola" de la Asociación de Maquinaria de Computación. doi :10.1145/1046931.1046941. S2CID  23502115. Archivado desde el original el 30 de mayo de 2020 . Consultado el 16 de abril de 2006 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  28. ^ Ambron, Sueann y Hooper, Kristina, eds. (1988). "Editoriales, multimedia e interactividad". Multimedia interactiva . Grupo Cobb. ISBN 1-55615-124-1.
  29. ^ Eliot Kimber (2006). "XML es 10". Drmacros-xml-rants.blogspot.com . Consultado el 16 de noviembre de 2017 .
  30. ^ El grupo de trabajo se llamó originalmente "Junta de Revisión Editorial". Los miembros originales y los siete que se agregaron antes de que se completara la primera edición se enumeran al final de la primera edición de la Recomendación XML, en http://www.w3.org/TR/1998/REC-xml-19980210.
  31. ^ "Informes del W3C SGML ERB al SGML WG y del W3C XML ERB al XML SIG". W3C . Consultado el 31 de julio de 2009 .
  32. ^ "Red de tecnología Oracle para desarrolladores de Java - Red de tecnología Oracle". Oráculo . Consultado el 16 de noviembre de 2017 .
  33. ^ "Lenguaje de marcado extensible (XML)". W3C. 14 de noviembre de 1996 . Consultado el 31 de julio de 2009 .
  34. ^ Jon Bosak; Microsistemas solares (7 de diciembre de 2006). "Discurso de clausura, XML 2006". 2006.xmlconference.org. Archivado desde el original el 11 de julio de 2007 . Consultado el 31 de julio de 2009 .
  35. ^ "Lenguaje de marcado extensible (XML) 1.0 (tercera edición)". W3C . Consultado el 22 de agosto de 2010 .
  36. ^ ab "Lenguaje de marcado extensible (XML) 1.1 (segunda edición), justificación y lista de cambios para XML 1.1". W3C . Consultado el 20 de enero de 2012 .
  37. ^ Harold, Elliotte oxidado (2004). XML efectivo . Addison-Wesley. págs. 10-19. ISBN 0-321-15040-6.
  38. ^ "Lenguaje de marcado extensible (XML) 1.1 (segunda edición)". W3C . Consultado el 22 de agosto de 2010 .
  39. ^ Bray, Tim (10 de febrero de 2002). "Lenguaje de marcado extensible, SW (XML-SW)".
  40. ^ "Grupo comunitario MicroXML". W3C . 2012-10-01 . Consultado el 5 de agosto de 2023 .
  41. ^ "XML: el impuesto sobre el soporte angular". Codificaciónhorror.com . 11 de mayo de 2008 . Consultado el 16 de noviembre de 2017 .
  42. ^ "El mito del XML autodescriptivo" (PDF) . Flujo de trabajo.HealthBase.info . Septiembre de 2003 . Consultado el 16 de noviembre de 2017 .
  43. ^ "¿Qué alternativas utilizables a la sintaxis XML conoces?". StackOverflow.com . Consultado el 16 de noviembre de 2017 .

Otras lecturas

enlaces externos