XML


El lenguaje de marcado extensible ( XML ) es un lenguaje de marcado que define un conjunto de reglas para codificar documentos en un formato que es legible por humanos y por máquina . 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 libres— 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 lenguajes humanos . Aunque el diseño de XML se centra en documentos, el lenguaje se utiliza ampliamente para la representación de estructuras de datos arbitrarias [7] , como las que se utilizan en los servicios web .

Existen varios sistemas de esquema 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 al procesamiento de datos XML.

La esencia de por qué son necesarios los lenguajes de marcado extensibles se explica en Lenguaje de marcado (por ejemplo, consulte Lenguaje de marcado § XML ) y en Lenguaje de marcado generalizado estándar .

Se han desarrollado cientos de formatos de documentos que utilizan sintaxis XML, [8] incluidos RSS , Atom , SOAP , SVG y XHTML . Formatos basados en XML se han convertido en el valor predeterminado para muchas herramientas de oficina-productividad, incluyendo Microsoft Office ( Office Open XML ), OpenOffice.org y LibreOffice ( OpenDocument ), y de Apple 's iWork [ cita requerida ] . XML también ha proporcionado el lenguaje base para protocolos de comunicación como XMPP . Las aplicaciones para Microsoft .NET Framework utilizan archivos XML para la configuración y las listas de propiedades son una implementación del almacenamiento de configuración construido en XML. [9]

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 las características enriquecidas de la especificación del esquema XML. Muchos de estos estándares son bastante complejos y no es raro que una especificación comprenda varios miles de páginas. [ cita requerida ] En la publicación, 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.

XML se utiliza ampliamente en una arquitectura orientada a servicios (SOA). Los sistemas dispares se comunican entre sí mediante el intercambio de mensajes XML. El formato de intercambio de mensajes está estandarizado como un esquema XML (XSD). Esto también se conoce como esquema canónico. XML se ha vuelto de uso común para el intercambio de datos a través de Internet. IETF RFC: 3023 , ahora reemplazado por RFC: 7303 , dio reglas para la construcción de tipos de medios de Internet para su uso al enviar XML. También define los tipos de medios application/xmly text/xml, que solo dicen que los datos están en XML, y nada sobre su semántica .

RFC 7303 también recomienda que a los lenguajes basados ​​en XML se les den tipos de medios terminados en +xml; por ejemplo image/svg+xmlpara SVG . Otras pautas para el uso de XML en un contexto de red aparecen en RFC 3470, también conocido como IETF BCP 70, un documento que cubre muchos aspectos del diseño y la implementación de un lenguaje basado en XML.

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 los conceptos clave que se encuentran con mayor frecuencia en el uso diario.

Personaje

Un documento XML es una cadena de caracteres . Casi todos los caracteres Unicode legales pueden aparecer en un documento XML.

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 hacer y lo que no debe hacer, pero la aplicación está fuera de su alcance. El procesador (como lo llama la especificación) a menudo se denomina coloquialmente un analizador XML .

Marcado y contenido

Los caracteres que componen un documento XML se dividen en marcado y contenido , que pueden distinguirse por la aplicación de reglas sintácticas simples. Generalmente, las cadenas que constituyen el marcado comienzan con el carácter <y terminan con a >, o comienzan con el carácter &y terminan con a ;. Las cadenas de caracteres que no están marcadas son contenido. Sin embargo, en una sección 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 >. Las etiquetas vienen en tres sabores:
  • etiqueta de inicio , como
    ;
  • etiqueta final , como
;
  • etiqueta de elemento vacío , como .
  • Elemento

    Un elemento es un componente de documento lógico que comienza con una etiqueta de inicio y termina con una etiqueta de finalización coincidente o consta solo 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 Hello, world!. Otro es  >.

    Atributo

    Un atributo es una construcción de marcado que consta de un par de nombre-valor que existe dentro de una etiqueta de inicio o una etiqueta de elemento vacío. Un ejemplo es Madonna, donde los nombres de los atributos son "src" y "alt", y sus valores son "madonna.jpg" y "Madonna" respectivamente. Otro ejemplo es Connect A to B., 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 debe hacerse codificando la lista en un atributo XML bien formado [i] con algún formato más allá de lo que XML define a sí mismo. Por lo general, se trata de una lista delimitada por coma o punto y coma o, si se sabe que los valores individuales no contienen espacios, [ii] se puede utilizar una lista delimitada por espacios.
    Welcome!
    , donde el atributo "clase" tiene tanto el valor "cuadro de saludo interno" y también indica los dos nombres de clase CSS "interno" y "cuadro de saludo".

    Declaración XML

    Los documentos XML pueden comenzar con una declaración XML que describe cierta información sobre sí mismos. Un ejemplo es .

    Los documentos XML constan enteramente 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 facilidades 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 pueden usarse directamente.

    Caracteres válidos

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

    • U + 0009 (pestaña 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 no caracteres 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 no caracteres.

    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] Al mismo tiempo, sin embargo, 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 (Línea siguiente) requiriendo que se escriban en formato de escape (por ejemplo, U + 0001 debe escribirse como 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.0 o 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 y UTF-16 . [12] Hay muchas otras codificaciones de texto anteriores a Unicode, como ASCII e ISO / IEC 8859 ; sus repertorios de caracteres en casi todos los casos son subconjuntos del juego 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.

    Escapando

    XML proporciona facilidades de escape para incluir caracteres cuya inclusión directa es problemática. Por ejemplo:

    • Los caracteres "<" y "&" son marcadores de sintaxis clave y es posible que nunca aparezcan en el contenido fuera de una sección CDATA . Se permite, pero no se recomienda, utilizar "<" en valores de entidad XML. [14]
    • Algunas codificaciones de caracteres solo admiten un subconjunto de Unicode. Por ejemplo, es legal 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 la máquina del autor.
    • Algunos caracteres tienen glifos que no se pueden distinguir visualmente de otros caracteres, como el espacio que no se separa (  ) "" y el espacio ( ) "", y la letra mayúscula cirílica A ( А) "А" y la letra mayúscula latina A ( A) "A".

    Hay cinco entidades predefinidas :

    • < representa "<";
    • > representa ">";
    • & representa "&";
    • ' representa " ' ";
    • " representa ' " '.

    Todos los caracteres Unicode permitidos se pueden representar 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 o . De manera similar, la cadena "I <3 Jörg" podría codificarse para su inclusión en un documento XML como I <3 Jörg.