miércoles, 3 de agosto de 2016

Extensible Markup Language


XML, siglas en inglés de eXtensible Markup Language ("lenguaje de marcas Extensible"), es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C) utilizado para almacenar datos en forma legible. Proviene del lenguaje SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML) para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones deben comunicarse entre sí o integrar información.1
XML no ha nacido sólo para su aplicación para Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa imaginable.
XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil

A continuación se muestra un ejemplo para entender la estructura de un documento XML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Edit_Mensaje SYSTEM "Edit_Mensaje.dtd">

<Edit_Mensaje>
     <Mensaje>
          <Remitente>
               <Nombre>Nombre del remitente</Nombre>
               <Mail> Correo del remitente </Mail>
          </Remitente>
          <Destinatario>
               <Nombre>Nombre del destinatario</Nombre>
               <Mail>Correo del destinatario</Mail>
          </Destinatario>
          <Texto>
               <Asunto>
                    Este es mi documento con una estructura muy sencilla 
                    no contiene atributos ni entidades...
               </Asunto>
               <Parrafo>
                    Este es mi documento con una estructura muy sencilla 
                    no contiene atributos ni entidades...
               </Parrafo>
          </Texto>
     </Mensaje>
</Edit_Mensaje>
Partes de un documento XML
Un documento XML está formado por el prólogo y por el cuerpo del documento así como texto de etiquetas que contiene una gran variedad de efectos positivos o negativos en la referencia opcional a la que se refiere el documento, hay que tener mucho cuidado de esa parte de la gramática léxica para que se componga de manera uniforme.

Prólogo
Aunque no es obligatorio, los documentos XML pueden empezar con unas líneas que describen la versión XML, el tipo de documento y otras cosas.

El prólogo de un documento XML contiene:

Una declaración XML. Es la sentencia que declara al documento como un documento XML.
Una declaración de tipo de documento. Enlaza el documento con su DTD (definición de tipo de documento), o el DTD puede estar incluido en la propia declaración o ambas cosas al mismo tiempo.
Uno o más comentarios e instrucciones de procesamiento.
EJEMPLO: <?xml version="1.0" encoding="UTF-8"?>

Cuerpo
A diferencia del prólogo, el cuerpo no es opcional en un documento XML, el cuerpo debe contener solo un elemento raíz, característica indispensable también para que el documento esté bien formado. Sin embargo es necesaria la adquisición de datos para su buen funcionamiento.

EJEMPLO:

       <Edit_Mensaje>
           (...)
       </Edit_Mensaje>
Elementos
Los elementos XML pueden tener contenido (más elementos, caracteres o ambos), o bien ser elementos vacíos.

Atributos
Los elementos pueden tener atributos, que son una manera de incorporar características o propiedades a los elementos de un documento. Deben ir entre comillas.

Por ejemplo, un elemento «estudiante» puede tener un atributo «Mario» y un atributo «tipo», con valores «come croquetas» y «taleno» respectivamente.

<Estudiante Mario="come croquetas" tipo="taleno">Esto es un día que Mario va paseando…</Estudiante>

Entidades predefinidas[editar]
Entidades para representar caracteres especiales para que, de esta forma, no sean interpretados como marcado en el procesador XML.

Ejemplo: entidad predefinida: & carácter: &.

Secciones CDATA
Artículo principal: Anexo:Etiquetas HTML/XHTML
Es una construcción en XML para especificar datos utilizando cualquier carácter sin que se interprete como marcado XML. No confundir con 2(#PCDATA) que es para los elementos. Permite que caracteres especiales no rompan la estructura. Ejemplo:

<![CDATA[contenido especial: \n áéíóúñ&]]>
Comentarios
Comentarios a modo informativo para el programador que han de ser ignorados por el procesador. Los comentarios en XML tienen el siguiente formato:

  <!--- Esto es un comentario --->
  <!-- Otro comentario -->
Validez
Que un documento esté «bien formado» solamente se refiere a su estructura sintáctica básica, es decir, que se componga de elementos, atributos y comentarios como XML especifica que se escriban. Ahora bien, cada aplicación de XML, es decir, cada lenguaje definido con esta tecnología, necesitará especificar cuál es exactamente la relación que debe verificarse entre los distintos elementos presentes en el documento.

Esta relación entre elementos se especifica en un documento externo o definición (expresada como DTD —Document Type Definition, 'Definición de Tipo de Documento'— o como XSchema). Crear una definición equivale a crear un nuevo lenguaje de marcado, para una aplicación específica.

Document Type Definition
La Document Type Definition o DTD (en español "definición de tipo de documento") define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. Los documentos XML que se ajustan a su DTD son denominados válidos.

Declaraciones tipo elemento
Los elementos deben ajustarse a un tipo de documento declarado en una DTD para que el documento sea considerado como válido.

Modelos de contenido
Un modelo de contenido es un patrón que establece los subelementos aceptados, y el orden en que se aceptan.

Declaraciones de lista de atributos
Los atributos se usan para añadir información adicional a los elementos de un documento.

Tipos de atributos
Atributos CDATA y NMTOKEN
Atributos enumerados y notaciones
Atributos ID e IDREF
Declaración de entidades
XML hace referencia a objetos que no deben ser analizados sintácticamente según las reglas XML, mediante el uso de entidades. Las entidades pueden ser:

Internas o externas
Analizadas o no analizadas
Generales o parametrizadas
Espacios de nombres[editar]
Los espacios de nombres XML permiten separar semánticamente los elementos que forman un documento XML.

XML Schemas (XSD)
Un Schema es algo similar a un DTD. Define qué elementos puede contener un documento XML, cómo están organizados y qué atributos y de qué tipo pueden tener sus elementos.

Ventajas de los Schemas frente a los DTD[editar]
Usan sintaxis de XML, al contrario que los DTD.
Permiten especificar los tipos de datos.
Son extensibles.

Herramientas para trabajar con documentos XML
Puede ser cualquier procesador de texto, que sea capaz de producir archivos .txt es capaz de generar XML, aunque en los entornos de desarrollo como Eclipse o Visual Studio, se facilita, ya que reconoce los formatos y ayuda a generar un XML bien formado. Aunque se puede dividir en dos grupos:
• Herramientas de creación.
• Herramientas de administración de contenido



¿POR QUÉ ES ÚTIL EL LENGUAJE XML PARA LOS PROGRAMAS INFORMÁTICOS?
Un programa informático puede estar escrito en Java, Visual Basic y cualquier otro lenguaje. En esencia, todos los programas procesan información, entendiéndose por información “dato + significado”. Para el caso que estamos viendo, el dato en el ejemplo sería “Mateo” y el significado es un “nombre de persona”. Por lo tanto un documento escrito en XML tendría la información que necesitan los programas para procesar.
 XML se plantea como un lenguaje estándar para el intercambio de información entre diferentes programas de una manera segura, fiable y libre, ya que no pertenece a ninguna compañía. Podemos ver por qué el XML es tan interesante para el intercambio de datos con el siguiente ejemplo:
Mateo nació el 15.10.2012 en la ciudad de Madrid con un peso de 3.1 kg y una estatura de 45 cm.
Maribel nació el 11.09.1976 en la ciudad de Sevilla con un peso de 3 Kg y una estatura de 40 cm.

Analizando el texto, nos encontramos que hay datos como “Madrid” y su correspondiente significado, que es una “ciudad” y otros más en un formato humano, tan sólo entendible por personas, no por los programas. Por tanto, podemos convertir el texto tanto en una base de datos “tradicional” como en un archivo o documento XML, que son formatos que los programas ya podrían entender, de la siguiente manera: 
 En formato tabla (base de datos “tradicional”):
Ejemplo:

En formato XML:
 <Datos-Nacimiento>
    <Persona>
       <Nombre>
Mateo</Nombre>
       <Fecha>
15.10.2012</Fecha>
       <Ciudad>
Madrid</Ciudad>
       <Peso>
3.1Kg</Peso>
       <Estatura>
45cm</Estatura>
    </Persona>
    <Persona>
       <Nombre>
Maribel</Nombre>
       <Fecha>
11.09.2012</Fecha>
       <Ciudad>
Sevilla</Ciudad>
       <Peso>
3Kg</Peso>
       <Estatura
>40cm</Estatura>
    </Persona>
</Datos-Nacimiento>