jump to navigation

10 años de XML Febrero 19, 2008

Publicado por lineadecodigo en : Noticias Web, XML , Añadir un comenario

10 años de XMLEl 10 de febrero de 1998 se publicaba la versión 1 del lenguaje XML (eXtensible Markup Language). 10 años después su utilización en el mundo de la tecnología es masivo: comunicaciones entre sistemas, configuraciones, intercambio de datos, presentaciones, bases de datos,...

Todo gracias a su gran independencia de platafoma.

Felicita al XML en la página de la W3C

Tu, ¿Dónde estás utilizando el XML?

Definir la estructura Persona en XML Junio 10, 2007

Publicado por lineadecodigo en : XML , 7 comentarios

Lo que vamos a hacer es definir la estructura persona mediante el lenguaje XML. Para ello tendremos que hacer dos cosas: la primera será definir el DTD (Document Type Definition) donde se declara la estructura de la persona. En segundo lugar crearemos un fichero XML donde tendremos los datos de una persona en particular, los cuales deben de seguir la estructura definida en el anterior DTD.

Definir el DTD
El DTD es un documento que nos ayuda a definir las estructuras que queremos que sean utilizadas en nuestro documento XML, de tal manera que se establece una relación de validación entre el DTD y el documento XML.

Nuestra estructura persona se compone de una serie de elementos. Los elementos serían:

Para definir un elemento utilizaremos la etiqueta ELEMENT, la cual tiene la siguiente estructura:

  1. <!ELEMENT nombre_atributo (tipo)>

En el caso que estemos definiendo elementos que van a contener texto, estos serán del tipo PCDATA. El código será el siguiente:

  1. <!ELEMENT nombre (#PCDATA)>
  2. <!ELEMENT apellido (#PCDATA)>
  3. <!ELEMENT direccion (#PCDATA)>
  4. <!ELEMENT telefono (#PCDATA)>
  5. <!ELEMENT movil (#PCDATA)>
  6. <!ELEMENT foto (#PCDATA)>

Hemos definido los elementos por separado. Ahora tendremos que definir la estructura persona, la cual contiene estos elementos y les aplica una serie de restricciones. Las restricciones son que los apellidos pueden ser más de uno, que tendremos teléfono o móvil y que la fotografía será opcional.

Veamos como contemplar cada una de estas restricciones por separado. Para el caso de que sean 1 o varios elementos, se utiliza el símbolo + detrás del elemento (apellidos+). Para identificar que es un elemento u otro se utiliza el símbolo |, de esta manera la estructura será (telefono | movil). Por último veremos que la opcionalidad se identifica con el símbolo de cierre de interrogación (foto?). Con todo esto, la definición de la estructura persona será la siguiente:

  1. <!ELEMENT persona (nombre,apellido+,direccion,(telefono|movil),foto?)>

En el DTD solamente tendremos elementos, y no incluiremos ni atributos, ni entidades. Todos los elementos, quitando el elemento persona, serán, como hemos visto antes, del tipo #PCDATA.

El archivo lo llamaremos persona.dtd

Crear el documento XML
Una vez definido el DTD pasamos a crear el documento XML. Este le llamaremos persona.xml. En dicho documento lo primero que hay que identificar es que es un documentoXML Para ello tenemos la siguiente cabecera:

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

En esta cabecera tenemos 3 atributos:

Lo siguiente será indicar cual es el DTD contra el que vamos a validar el documento. Esto lo hacemos con el DOCTYPE mediante la siguiente línea:

  1. <!DOCTYPE persona SYSTEM "persona.dtd">

Deberemos de tener cuidado de no dejar espacios en blanco entre las interrogaciones y el texto o entre la exclamación inicial y el texto, ya que es este un error muy común de programación. Nos ahorrará muchos quebraderos de cabeza

Después de esto deberemos de insertar los elementos XML acordes a las reglas marcadas en nuestro DTD.

|- Descargar el código
|- Reportar error en el código
|- Foro sobre XML

Servlet que devuelve XML Noviembre 2, 2006

Publicado por lineadecodigo en : Java, XML , Añadir un comenario

Ahora que los desarrollos se están moviendo a arquitecturas SOA empezamos a ver que nos aparecen servicios por todos los lados. Es cierto que no se habla mucho de cómo se desarrollan dichos servicios, ya que las presentaciones de arquitectura SOA suponen que "estaban ahí".

Supongo que los sistemas legados de hace años ya estaban pensando en SOA y dejando sus interfaces lo más correctos posibles. Que no tenian datos en los interfaces de contrato datos relativos a la pantalla en la que se ejecutaban (esos terminales verde marciano) y que solo devolvían negocio.

Ahora que yo todavía no me he encontrado ningún "servicio del pasado" que solo maneje negocio. Y es por ello que tienes que acabar maleandolo para que deje unos datos lo suficientemente claros cómo para que sean consumidos en un entorno SOA.

En esta evolución nos encontramos que los servicios de los servidores ya no devuelven presentación, sino que ahora, en bastantes casos, devuelven solo negocio. Y qué mejor que utilizar el XML para describir dicho negocio.

Una de las posibilidades en estos casos es ir a un enfoque de Webservices. Posiblemente la más puritna. Si bien, es verdad que, los Webservices todavía no se encuentran en su punto más algido y tienen ciertas cosas que mejorar: velocidad, versionado, transaccionalidad,...

Un enfoque más sencillo es el de montarse un Servlet que nos devuelva un contenido XML.

Para poder hacer esto, lo primero que tenemos que hacer es crearnos una clase que extienda de HttpServlet.

  1. public class RespuestaXML extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {...}

Como todos sabemos los servlets tienen dos métodos para procesar las peticiones, dependiendo de como sean estas (GET o POST). Estos métodos son doGet y doPost. Podemos coger cualquierda de los dos para implementar nuestro ejemplo.

Dentro del método de procesado de la petición lo primero que tenemos que hacer si queremos devolver XML es establecer el tipo de contenido que devolverá elServlet. Para ello utilizamos el método .setContentType del objeto HttpServletResponse.

  1. Response.setContentType("text/xml");

Con esto le estamos diciendo al cliente receptor de la petición que el contenido que le va a llegar en dicha petición es XML.

Una vez tenemos definido el tipo de contenido lo siguiente es volcar contenido XML a la salida. Para ello deberemos de obtener un PrintWriter sobre el objeto HttpServletResponse.

  1. PrintWriter out = response.getWriter();

Y ahora empezar a volcar datos XML sobre la salida...

  1. out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><nombre>Linea de Codigo</nombre>");

En nuestro caso solo estamos devolviendo una etiqueta con el nombre de la web.

Es importante en este punto el recordar que los documentos XML empiezan con la siguiente cabecera:

  1. <?xml version="1.0" ?>

Aunque no extrictamente necesaria es buena práctica incluirla antes de nuestro contenido XML.

|- Descargar el código
|- Reportar error en el código
|- Foro sobre Java Servlet