XML y sus orígenes

Intercambio de Información , SGML y Meta-lenguajes.

El intercambio de Información siempre ha sido un grave problema en sistemas de información debido a la gran gamma de lenguajes, paquetes computacionales y sistemas operativos en existencia; desde el caso más simple como escribir un documento en "x" procesador de palabras que no puede ser abierto en otros ambientes, hasta los requerimientos más exigentes de intercambiar información entre empresas.

Es por esto que en 1986 se adoptó un standard denominado SGML("Standard Generalized Markup Language") para el intercambio de información (ISO-8879), de inicio éste fue adoptado por diversas industrias y empresas que hacían fuerte uso de documentación, sin embargo, la misma flexibilidad de SGML lo hicieron una tecnología compleja y por ende costosa de implementar en diversos proyectos; no fue hasta 1996 que el "World Wide Web Consortium" ( http://www.w3.org ) inicio trabajos sobre XML, un standard más simplificado que SGML que hiciera frente a las demandas de intercambio de información en Internet; la característica primordial que mantiene XML con SGML es que ambos son un lenguaje de marcación , también denominado Meta-Lenguaje.

Meta-lenguajes.

Un Meta-Lenguaje como su nombre lo implica es un lenguaje describiendo otro lenguaje, en el caso de información :estructuras de datos describiendo otras estructuras de datos, a continuación se ilustra un fragmento de SGML:

 
<De>servicios@osmosislatina.com
<Para>cursos@suempresa.com
<Mensaje>Le informo que esta es un estructura de SGML

De inmediato se pueden notar fragmentos describiendo otros fragmentos, el vocablo <De> describe servicios@osmosislatina.com, <Para> describe cursos@suempresa.com, y <Mensaje> describe otras serie de palabras; inclusive cabe mencionarse que HTML siendo un derivado de SGML, utliza este mismo tipo de estructura para delimitar información en diseños de paginas Web.

En lo que concierne a XML, aunque diseñado para simplificar SGML no depende de éste y tiene sus propias especificaciones ( http://www.w3.org/TR/REC-xml ), y desde luego su estructura será explorada a fondo en este curso.

Formación y Características de Documentos XML.

La estructura de un documento/fragmento XML contiene diversas características, que serán ilustradas a continuación :

<?xml version="1.0" encoding="ISO-8859-1"?>
     
 <catalogo>
 
  <producto>
         <modelo nombre="36345-X"> 
                      <disponibilidad lugar="almacén"> Si </disponibilidad>  
                      <descripción> 60 Watts Doble Canal </descripción>
         </modelo>
  </producto>


  <producto>
         <modelo nombre="AFBDFFG-77"> 
                      <disponibilidad lugar="piso"> Si </disponibilidad>  
                      <descripción> 320 Watts Canal-Sencillo </descripción>
         </modelo>
  </producto>

 </catalogo>

El primer elemento que inicia con signo de interrogación (?) en XML es conocido como una instrucción de procesamiento ("Processing Instruction"), que como su nombre implica, contiene información acerca de como debe ser procesado el documento. En este caso se esta indicando la versión de XML y el tipo de encoding, ambos atributos son utilizados y críticos al momento de procesar la información incluida en el documento, además de ser obligatorios para conformar una fragmento XML válido.

Implicaciones de Encoding

El concepto de encoding tiene un efecto directo sobre los caracteres especiales que sean definidos en XML, para efectos prácticos, estos caracteres especiales pueden ser considerados todos aquellos que no estén incluidos en un teclado ("keyboard") de computo standard.

Para nosotros que empleamos el castellano dichos caracteres serian letras con acentos como : á , é , í , ó o ú , sin embargo, para otros idiomas o regiones estos caracteres pueden variar considerablemente, por mencionar algunos el Alemán o Japonés.

Debido a lo antes mencionado, es recomendable especificar un encoding explicito a todo documento XML para garantizar que dichos caracteres sean procesados correctamente.

El término recomendable es utilizado ya que según la especificación XML todo documento se le asigna un encoding "default" de UTF-8, que es un standard mundial, sin embargo, basado en diversas pruebas esta asignación "default" no siempre es realizada al procesar XML, lo anterior resulta en que todos aquellos caracteres no reconocidos sean procesados a un signo de interrogación (?).

El encoding tipo ISO-8859-1 define todos aquellos caracteres empleados en castellano, así garantizando su procesamiento correcto.

Posteriormente se inicia con la información que desea ser descrita en XML, através del Tag <catalogo> se da inicio a la estructura de datos, notará que existe otro elemento </catalogo> al final del documento, el uso de la diagonal ( / ) al iniciar el Tag indica que el elemento en cuestión se ha terminado; lo anterior ilustra que todo elemento (Tag) en XML se encuentra anidado, esto es, agrupa información en sus definiciones, en el elemento catalogo se anidan producto dentro de éste modelo, el cual a su vez disponibilidad y descripcion.

En el caso de los elementos producto, estos anidan otros tres elementos y ningún tipo de información cruda ("raw"), esto es, directamente entre los Tags de inicio y finalización.

El elemento (Tag) modelo contiene el atributo nombre, el uso de atributos generalmente es utilizado cuando el elemento en cuestión incluirá elementos anidados, esto evita la necesidad de declarar información cruda ("raw") en el Tag.El elemento disponiblidad dentro modelo define tanto un atributo como información cruda ("raw"), este caso se da cuando se requiere una clara distinción entre cierta información , en este caso el lugar de disponibilidad y su validez. El Tag descripcion simplemente contiene información cruda ("raw") acerca del producto en cuestión.

Las descripciones anteriores forman la base de XML, sin embargo, existen otras consideraciones especiales que deben ser tomadas en cuenta al formar un documento XML.

Herramientas para su Creación

La creación de XML puede ser llevada acabo mediante cualquier editor de textos, sin embargo, hoy en día están surgiendo diversos ambientes gráficos que permiten acelerar el desarrollo de XML e integrar diversas funcionalidades como parsers, XSL Engines, "Debuggers" elaborados y otros mecanismos especiales; algunas herramientas de este tipo:

Caracteres Especiales y de Escape.

Dependiendo del editor de texto o herramienta utilizada para generar el documento XML, su sistema operativo y el encoding declarado dentro del documento pueden existir diversos caracteres especiales que requieren ser utilizados al definir su información, a continuación se mencionan algunos caracteres y su representación dentro de XML.

Carácter XML ASCII
á &#225; ALT 160
é &#233; ALT 130
í &#237; ALT 161
ó &#243; ALT 162
ú &#250; ALT 163
ñ &#241; ALT 164
Ñ &#209; ALT 165
à &#224; ALT 133
è &#232; ALT 138
ì &#236; ALT 141
Carácter XML ASCII
ò &#242; ALT 149
ù &#249; ALT 151
ç &#231; ALT 135
â &#226; ALT 131
ê &#234; ALT 136
î &#238; ALT 140
ô &#244; ALT 147
û &#251; ALT 150
Ç &#199; ALT 128
© &#169;

® &#174;



Además de estos caracteres especiales, existen otros que por su uso en XML son considerados reservados, algunos de estos y su representación en XML :

Carácter XML
< &lt;
> &gt;
' &apos;
" &quot;
& &amp;


Los caracteres anteriores son reservados debido a que al ser procesado un documento XML representan instrucciones especificas, esto ocasionaría que los elementos fueran procesados en lugar de ser representados gráficamente.

Existe una manera de agrupar caracteres reservados para que estos no sean procesados como XML , en otras palabras, que sean interpretados literalmente:

 
<![CDATA[ 
Esta es una lista con <<<< FLECHAS >>>> que
 generaría un """"SIN NUMERO DE ERRORS"""" al ser 'procesada', es 
preferible agruparla...

]]>

Utilizando el elemento XML <![CDATA[ ]]> todo procesador ("Parser") reconoce que la información dentro de éste sea tomada literalmente.

En ocasiones, es conveniente definir anotaciones/comentarios dentro de un documento, esto se lleva acabo mediante los Tags ( <!-- y --> ):

 
<!-- 
Este es solo un recordatorio 
que no será procesado 
-->

Otro carácter que puede ser encontrado en un documento XML es la clausura prematura de un Tag.

 

<reloj tipo="digital">     </reloj>

<!-- El Tag puede ser clausurado prematuramente 
           su interpretación es idéntica  -->

<reloj tipo="digital"/>

La primera declaración esta escrita de la manera en que típicamente se encuentra en un documento XML, se define el Tag inicial y éste debe ser finalizado con un Tag del mismo nombre con una diagonal ( / ); en aquellas declaraciones en las que no se requiere definir información cruda ("raw") o anidar otros elementos , esto es, directamente entre los Tags de inicio y finalización, se puede utilizar una diagonal ( / ) al final del elemento inicial.

Menú Curso

XML y sus Orígenes

Manipulación y Proceso de XML

DOM, SAX y JDOM

Namespaces, Schemas y DTD's

XSL: XSLT, XPath y TraX

XMLRPC y SOAP (Web Services)

Diseño con XMLRPC

Diseño con SOAP .

Apéndice "A" (Procesando XML con parsers).

Apéndice "B" (Validando XML con Schemas y DTD's).

Apéndice "C" (XSL: XPath y "XSL Stylesheets").

Apéndice "D" (XMLRPC: Diseño).

Apéndice "E" (SOAP, WSDL, UDDI y WSIL : Diseño).