XML (Extensible Markup Language) es un metalenguaje que permite definir lenguajes de marcado.
Los lenguajes de marcado permiten describir la estructura de los contenidos de un documento.
Un lenguaje de marcado está formado por un conjunto de etiquetas que se encierran entre corchetes angulares, <>, y se usan en pares.
Cada par de etiquetas delimita el comienzo y el final de una porción de documento a la que se refiere la etiqueta. Por ejemplo:
<asignatura>Bases de datos</asignatura>
Permite que la información esté autodocumentada.
Formato no rígido pues dispone de la capacidad de reconocer e ignorar nuevas etiquetas.
Las etiquetas pueden aparecer varias veces facilitando la representación de atributos multivaluados.
Permite el anidamiento de etiquetas.
Consta de dos declaraciones:
<título>introducción</título>
<Nombre etiqueta/>
<Nombre etiqueta></Nombre etiqueta>
Los elementos se pueden anidar:
Un texto aparece en el contexto de un elemento si aparece entre la etiqueta de inicio y final de dicho elemento.
Las etiquetas se anidan correctamente si toda etiqueta de inicio tiene un única etiqueta de finalización coincidente que está en el contexto del mismo elemento padre.
Un elemento puede aparecer varias veces en un documento XML.
<cuenta tipo_cuenta="corriente">
Todo documento XML tiene un único elemento raíz que engloba al resto de elementos del documento.
En el primer ejemplo el elemento
Es un texto que se escribe entre <!–- y -->
La cadena "--" no puede aparecer dentro de un comentario.
Los comentarios pueden aparecer en cualquier sitio salvo dentro de declaraciones, etiquetas y dentro de otros comentarios.
Es un mecanismo que permite especificar nombre únicos globalmente para que se usen como marcas de elementos en los documentos XML.
Para ello se antepone a la etiqueta o atributo un identificador de recursos universal. En el ejemplo del banco podría ser http:///www.BancoPrincipal.com
Para abreviarlo se declaran abreviaturas del espacio de nombres mediante el atributo xmlns
Se puede definir un espacio de nombres predeterminado mediante el uso del atributo xmlns en el elemento raíz.
Los elementos sin un prefijo de espacio de nombres explícito pertenecen entonces al espacio de nombres predeterminado.
<![CDATA]<cuenta>…</cuenta>]]>
ElementTree es una librería estándar para procesar y crear documentos XML que crea un árbol de objetos.
El árbol generado esta formado por objetos "elemento" de tipo Element donde cada uno de ellos dispone de un conjunto de atributos: nombre, diccionario de atributos, valor textual y secuencia de elementos hijo.
También es posible eliminar elementos con el método Element.remove().
Tomando como entrada la salida del ejemplo anterior se van a eliminar todos los elementos de tipo "Libro" que tengan un número de orden mayor que 3.
Se pueden añadir múltiples hijos a un elemento mediante el método extend() que recibe como argumento algo que sea iterable tal como una lista o bien otra instancia de Element.
En el caso de una instancia de Element, los hijos del elemento dado se añaden como hijos del nuevo padre. Sin embargo el padre actual no es añadido.