Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

37
“JDOM" 1-2 Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina Zottola Pareja Darwin Rodrigo [email protected] Ingeniería en Computación Universidad Nacional de Tucuman - UNT 1

description

Seminario complemento de conocimientos para "Metodo Flexible" trabajo que propone implementar una metodología para mejorar la gestión y administración de la información referente a observaciones clínicas para su aplicación en el Prototipo Web para Telemedicina de la provincia de Tucumán. “CHASQUI”

Transcript of Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

Page 1: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

1

“JDOM" 1-2

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Zottola Pareja Darwin Rodrigo

[email protected]

Ingeniería en Computación

Universidad Nacional de Tucuman - UNT

Page 2: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

2

CONTENIDO

INTRODUCCIÓN

INTRODUCCION - XML

JDOM

EJEMPLO

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 3: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

3

INTRODUCCION - XML

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 4: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

4

QUE ES XML?

XML (Extensible Markup Language) es un lenguaje de etiquetas, es decir, cada paquete de información está delimitado por dos etiquetas

XML separa el contenido de la presentación(dato+información)

XML no es sólo un lenguaje, es una forma de especificar lenguajes, de ahí lo de extensible

HTML

<H1>Mateo</H1>

XML

<Nombre>Mateo</Nombre>

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 5: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

5

QUE ES XML?

Cualquiera puede desarrollar su propio lenguaje de etiquetas adecuado al tipo de aplicación que más le convenga.

Hay muchas tecnologías basadas en XML (XPath, XLink, XPointer, XSL, ...).

No pertenece a ninguna compañía

XML es texto para estructurar datos(persistencia)

<Datos-Nacimiento> <Persona>

<Nombre>Mateo</Nombre>

<Fecha>15.10.2009</Fecha> <Ciudad>Madrid</Ciudad> <Peso>3.1Kg</Peso>

<Estatura>45cm</Estatura> </Persona> </Datos-Nacimiento>

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 6: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

6

XML – POR QUE USARLO?

Xml es texto para estructurar datos(persistencia) Estándar para el intercambio de datos entre aplicaciones en Internet independiente del formato de almacenamiento de los mismosHoy en dia muchas aplicaciones requieren el almacenamiento de datos XML

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 7: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

7

XML- Componentes

Los documentos XML constan de:

Instrucciones de procesamiento (processing instructions – PI)

Elementos Comentarios Referencias a

entidades Secciones CDATA

SEC. CDATA <![CDATA[<saludo>Hola, mundo!</saludo>]]>

ELEMENT Y ATRIBUTOS <saludo tipo=“coloquial”>Hola</saludo>

INSTRUCIONES PROC <?xml version="1.0"?>

<saludo>Hola, mundo!</saludo>

COMENTARIOS <!-- Esto es un comentario -->

REF. A ENTIDADES <!ENTITY Empresa “Universidad de Deusto”> <pie>Creado por &Empresa;</pie>

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 8: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

8

XML- GRAMATICA

La gramática que restringe los elementos válidos dentro de un nuevo derivado de XML puede expresarse en forma de:

DTD (Document Type Definitions) o

Esquemas XML

DTD (Document Type Definitions)*Define de la construcción del xml.

*Permiten definir qué significa exactamente cada una de las marcas.*Permitre diseñar modelos jerarquicos

*Describe el contenido en forma precisa y evita repeticiones.

XML Schemas *Schema vence las limitaciones de los

DTDs*Schema, permite definir estructuras

mas complejas que en los DTDs*Se puede definir tipos de datos específicos, por ejemplo no sólo NMTOKEN , #PCDATA o CDATA.

*XML Schema, se puede manipular de manera sencilla via VBScript o en

Páginas ASP o JSP.*Puede establecer elementos con

relacionesZottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 9: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

9

XML Schemas - XSD

Algunas ventajas: Mayor precisión en la definición de tipos de

datos mediante formatos y facetas Por ejemplo, la fecha:

<date type="date">1999-03-11</date> ¿es el 11 de marzo o el 3 de noviembre?

Los esquemas se definen como documentos XML, en un documento aparte con extensión .XSD

En los documentos XML que se basen en ese esquema, incluiremos una referencia al archivo .XSDZottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 10: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

10

XML- XML bien formado y/o XML válido Hay dos tipos de documentos XML:

Bien formados: son aquellos que cumplen las reglas sintácticas de XML

Válidos: son aquellos que, además de ser bien formados, siguen las reglas de una gramática (definida en un DTD o XML Schema)

Para que un documento esté bien formado:

Debe tener un prólogo

Debe tener una etiqueta raíz

Las etiquetas se hallan correctamente anidadas

Se usan caracteres válidos y bien aplicados

Los valores de los atributos vienen encerrados entre comillas

Una etiqueta de apertura siempre tiene su contraparte de cierre con “/

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 11: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

11

XML - APIs para Procesar XML

Java API for XML Processing (JAXP) Java API for XML/Java Binding (JAXB) Long Term JavaBeans Persistence Java API for XML Messaging (JAXM) Java API for XML RPC (JAX RPC) Java API for XML Registry (JAXR)

API SOBRE JAXP SAX, Simple API for XML DOM, Document Object

Model API from W3C XSLT, XML Style Sheet

Language Transformations from W3C

XPath, XML Path Language from W3C

JDOM, "Java optimized" document object model API from jdom.org

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 12: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

12

XML - APIs para Procesar XML

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 13: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

13

XML - APIs para Procesar XML Usar JAXB cuando desee:

Acceder a los datos en la memoria, pero no necesitan las capacidades de manipulación de árboles

Procesar sólo los datos que son válidos

Convertir los datos en diferentes tipos

Generar clases basadas en un DTD

Construir representaciones de objetos de datos XML.

Utilice JAXP cuando desee:

Tener flexibilidad en cuanto a la forma de acceder a los datos: ya sea en serie con la memoria SAX o DOM en forma aleatoria conç

Utilice el mismo código de procesamiento de documentos basada en DTD diferentes

Analizar los documentos que no son necesariamente válidas

Aplicar transformaciones XSLT Insertar o eliminar objetos de

un árbol de objetos que representa los datos XML

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 14: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

14

XML - APIs para Procesar XML

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 15: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

15

XML Validado

PARSERXML

XML

DTD/XSD

XML- PARSING

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 16: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

16

JDOM

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 17: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

17

QUE ES JDOM ? JAVA + XML = JDOM Es una librería de codigo abierto creada para la manipulacion de archivos XML y optimizada para java.(posee licencia Apache(2000) )Modelo de programación para representar datos en xml Modelo similar a DOM pero no esta hecho o modelado en base al mismo. “Lo mejor de Ambos mundos”-

API sencillo de usar Modelo de acceso aleatorio como DOM Aprovecha las ventajas de Sax Utiliza Clases y no interfaces

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 18: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

18

JDOM - FILOSOFIA

Poder ser directamente reconocido y asimilado por cualquier programador JAVA

Utilizar las ventajas del poder del lenguaje java (method overloading, collections, reflection)

Ocultar lo complejo del lenjuage XML lo mayor posible

Integrarse de manera eficiente con SAX y DOM

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 19: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

19

JDOM - Package Structure

org.jdom

org.jdom.input

org.jdom.output

org.jdom.adapters

org.jdom.transform

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 20: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

20

JDOM - CLASES

org.jdom Package Attribute CDATA Comment DocType Document Element EntityRef Namespace ProcessingInstruction Text

org.jdom.transform PackageJDOMSource JDOMResult

The org.jdom.input Package SAXBuilderDOMBuilder ResultSetBuilder

The org.jdom.output PackageXMLOutputter SAXOutputter DOMOutputterJTreeOutputter

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 21: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

21

JDOM – CLASE Document

Documentos son representados por

org.jdom.Document

Pueden ser creados desde cero :

new Document(new Element("root"));

O ser creados desde un archivo, stream, system ID, URL:

Document doc = SAXBuilder builder = new SAXBuilder();

Document doc = builder.build(url);

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 22: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

22Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 23: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

23

JDOM - LA CLASE Element

Para navegar por el arbol de elementos :

// Obtener la raiz del Arbol

Element root = doc.getRootElement();

// Obtener una lista de los hijos

List allChildren = root.getChildren();

// Obtener elementos con un nombre dado

List namedChildren = root.getChildren("name");

// Obtener el Primer Elemento con un nombre dado

Element child = root.getChild("name");

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 24: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

24

JDOM 2 - Sax Parsing Mejorado

SaXBuilder : GetFactory () ha sido sustituido por set /

getJDOMFactory () Los métodos booleanos como getExpandEntities ()

han sido reemplazados con es () métodos como isExpandEntities ()

Para los métodos obsoletos booleanas / constructores, XMLReaderJDOMFactory usa XMLReaders.DTDVALIDATION o XMLReaders.NOVALIDATION

Para los constructores de String en desuso, usa XMLReaderSAX2Factory

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 25: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

25

JDOM – BUENA FORMACION

El constructor de Elementos se asegura de chequear si el mismo es ilegal . Por EJ cuando se utiliza un carácter prohibido.Al agregar y borrar los elementos chequea la estructura del Arbol:

No de haber lazos Solamente un root Consistencia en los

espacios de nombres

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 26: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

26

JDOM - ATRIBUTOS Todo elemento puede tener atributos:

<table width="100%" border="0"> </table>

// Obtener un atributo

String width = table.getAttributeValue("width");

int border = table.getAttribute("width")

.getIntValue();

// agregar un Atributo

table.setAttribute("vspace", "0");

// Borrar un atributo o todos ellos

table.removeAttribute("vspace");

table.getAttributes().clear();

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 27: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

27

JDOM 2 - AttributeType

En la enumeración JDOM2 AttributeType nueva contiene todos los tipos de atributos mismas 1.x JDOM, pero son valores enumerados, no ints. Además, la clase atributo tiene constantes referencias que los miembros de la enumeración AttributeType.

// JDOM2 example same as JDOM 1.x

Attribute idatt = new Attribute("id", "value", Attribute.ID_TYPE); // Identical JDOM2 example using direct AttributeType Enum instead of

reference to enum member

Attribute idatt = new Attribute("id", "value", AttributeType.ID);

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 28: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

28

JDOM - LA CLASE Element

Para navegar por el arbol de elementos :

// Obtener la raiz del Arbol

Element root = doc.getRootElement();

// Obtener una lista de los hijos

List allChildren = root.getChildren();

// Obtener elementos con un nombre dado

List namedChildren = root.getChildren("name");

// Obtener el Primer Elemento con un nombre dado

Element child = root.getChild("name");

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 29: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

29

JDOM - Colecciones y excepciones

El contenido y el código de la clase 'List' en JDOM2 ha sido revisado para lanzar el mismo tipo de excepciones como las clases "básicas" java.util.List. Esto hace JDOM2 más predecible para personas familiarizadas con las implementaciones "estándar" java.util.List.

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 30: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

30

JDOM - CONTENIDO DE UN ELEMENTO Un Elemento puede tener un contenido:

<description> hola mundo </description>

// Lo siguiente devolveria "\n hola mundo \n"

String desc = element.getText();

// hola mundo sin espacios

String desc = element.getTextTrim();

// Se puede modificar y agragar un nuevo contenido y los caracteres especiales son reconocidos

element.setText("A new description");

element.setText("<xml> content");

De la misma manera puede ser modificados los Comment, Text, CDATA, ProcessingInstruction ,y EntityRef

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 31: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

31

JDOM - MOVIENDO ELEMENTOS

//Moving Element movable = new Element("movable");

parent1.addContent(movable); // place

parent1.removeContent(movable); // remove

parent2.addContent(movable); // add

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 32: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

32

JDOM - LA CLASE XMLOutputter

Esta permite que los tipos de salida sean flexible:

Document doc = new Document(...);

XMLOutputter outp = new XMLOutputter();

// Salida normal(en crudo)

outp.output(doc, fileOutputStream);

// Salida compacta

outp.setTextTrim(true);

outp.output(doc, socket.getOutputStream());

// Pretty output

outp.setIndent(" ");

outp.setNewlines(true);

outp.output(doc, System.out);

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 33: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

33

JDOM 2 – XMLOutputter RediseñadoGestión de espacios de nombres -

NamespaceStackGestión de configuración de formato

(sangría, etc) - Formato y FormatStack .Aplicar formato a la salida - Walker .Escapar de la salida apropiadamente -

EscapeStrategyGestión del proceso de producción, y la

entrega de la salida al destino - OutputProcessor *

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 34: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

34

JDOM - NAMESPACE• JDOM soporta namespace en forma nativa.

<xhtml:html

xmlns:xhtml="http://www.w3.org/1999/xhtml

<xhtml:title>Home Page</xhtml:title>

</xhtml:html>

Namespace xhtml = Namespace.getNamespace(

"xhtml", "http://www.w3.org/1999/xhtml");

List kids = html.getChildren("title", xhtml);

Element kid = html.getChild("title", xhtml);

kid.addContent(new Element("table", xhtml));

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 35: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

35

JDOM - Proceso de Intrucciones

<?br?><?cocoon-process type="xslt"?>// Get "target", such as cocoon-processString target = pi.getTarget();// Get "data", such as ' type="xslt"'String data = pi.getData();// The data is available as attributes!String type = pi.getValue("type");Target Data

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 36: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

36

CONCLUSIONES

JDOM es una Liberia de codigo abierto optimizada para java y la manipulacion y de documentos XML.Fue creada para se facil de aprender, para ser bastante potente como herramienta , y de comportamiento natural para los programadores en javaUsa JAXP e integrada tanto DOM Como SAXPuede utilizar cualquier tipo de parser ocultando la complejidad de su funcionamiento y aprovechando sus cualidades (ej XML Schema)Es JSR oficialProdude de una manera sencilla documentos XML. Pertenece a una familia de tecnologias donde se encuentran diferentes herramientas para poder manipular y estructurar datos.(EJ:Xquery)

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina

Page 37: Seminario 4 - JDOM 1 - 2 - (Prototipo Web Telemedicina)- Darwin Rodrigo Zottola Pareja

37

EJEMPLO

Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina