tema03_1 - servicios web (metadatos, xml, dom)

53
Servicios Telemáticos Avanzados. Tema 3-2 1 TEMA 3 Servicios Web (2) Eduardo Martínez Graciá Humberto Martínez Barberá

Upload: anonymous-xn5jdy0

Post on 29-Sep-2015

13 views

Category:

Documents


0 download

DESCRIPTION

servicios web

TRANSCRIPT

  • Servicios Telemticos Avanzados. Tema 3-2 1

    TEMA 3

    Servicios Web (2)

    Eduardo Martnez Graci

    Humberto Martnez Barber

  • Servicios Telemticos Avanzados. Tema 3-2 2

    Metadatos

    Definicin: datos sobre datos

    Fichero: una ficha por librocon la siguiente informacin: Ttulo del libro Autor Localizacin en las estanteras ...

    Libro: datos sobre los que sedescriben cosas

  • Servicios Telemticos Avanzados. Tema 3-2 3

    Metadatos

    Se pueden considerar como etiquetas asignadas a datos,de la forma nombre = valor Autor = Miguel de Cervantes

    Ttulo = Novelas ejemplares

    Localizacin = 1 D 3

    Para que sea de utilidad, cada etiqueta debeestar bien definida (nombre, descripcin, valores posibles)

    El conjunto de etiquetas se denomina esquema.Habitualmente, etiqueta y marca son sinnimos.

  • Servicios Telemticos Avanzados. Tema 3-2 4

    Lenguajes de marcas

    Los documentos electrnicos tienen 3 partes: Contenido: los datos o palabras en s mismos

    Estructura: la organizacin del contenido

    Presentacin: el aspecto con el que se presenta el contenido al lector

    Las marcas son secuencias de smbolos que, insertados en elcontenido de un documento, sirven para indicar su presentacin o suestructura

    HTML (Hypertext Markup Language): Las marcas definen la presentacin

    Problema: los buscadores no disponen deinformacin til para localizar los documentossolicitados

  • Servicios Telemticos Avanzados. Tema 3-2 5

    XML: eXtended Markup Language

    FacturaDe: Pepe MartinezA: Juan FernandezFecha: 1 Dic 2000Cantidad: 1000 PtsIva: 17%Total: 1170 Pts

    : Cabecera tipo 1: Nuevo prrafo

    Pepe MartinezJuan Fernandez

    1000171170

    : comienza la informacin de factura ... : Quin cre la factura

    Con HTML: Con XML: las marcas indican la estructura

    Las bsquedas son ms precisas con XML

  • Servicios Telemticos Avanzados. Tema 3-2 6

    Origen XML

    Hacia finales de los sesenta, un grupo de investigadorescomenz a interesarse por darle otros usos a losdocumentos electrnicos. En particular, IBM pidi a CharlesGoldfarb que construyese un sistema para almacenar,buscar, gestionar y publicar documentos legales.

    El resultado de su trabajo fue el lenguaje SGML (StandardGeneralized Markup Language), actualmente el estndar dela ISO 8879. XML es un subconjunto de SGML pensadopara ser llevado al web.

  • Servicios Telemticos Avanzados. Tema 3-2 7

    Documentos estructurados

    Goldfarb y otros investigadores de IBM reconocieron tres hechosimportantes:! Para intercambiar informacin, los programas tienen que soportar un

    lenguaje comn. Tiene sentido que ese lenguaje comn sea algn tipo delenguaje de marcas.

    La estructura de un documento se puede ver como una jerarqua deelementos. Por ejemplo, una carta puede tener, en un primer nivel, unelemento "encabezado" y otro "cuerpo". El encabezado puede contener, a suvez, elementos "destinatario", "asunto", etc. Las marcas que delimitan estoselementos se denominan marcas estructurales generalizadas (structuralgeneralized markup).

    Los documentos tienen que seguir algn tipo de reglas, es decir, el lenguajede marcas debera ser especificado de algn modo formal que permitiesegarantizar que el documento cumple cierta estructura.

  • Servicios Telemticos Avanzados. Tema 3-2 8

    Separacin contenido/presentacin

    Una vez que se tiene definido un tipo de documento, es necesariodefinir cmo se va a imprimir o a visualizar en una pantalla. Estadescripcin se recoge en una hoja de estilo. !

    La idea central de la solucin propuesta por Goldfarb es quemantener separados los tres aspectos de un documento, contenido,estructura, y presentacin, aporta grandes ventajas: Permite al navegador hacer el trabajo de presentacin de los datos en la

    pantalla Facilita al navegador la manipulacin de los datos, y la realizacin de

    clculos a partir de ellos Se pueden realizar bsquedas "inteligentes" de informacin. Fomenta la creacin de vocabularios (marcas) estndar en diferentes

    dominios, como los bancos, las telecomunicaciones, el transporte, etc.

  • Servicios Telemticos Avanzados. Tema 3-2 9

    XML bsico

    La siguiente figura muestra los elementos bsicos de unsistema basado en XML:

    documentoXML

    Definicin deTipo de

    Documento

    Parser XML Aplicacin XML

  • Servicios Telemticos Avanzados. Tema 3-2 10

    Detalles sintcticos

    Los documentos XML estn compuestos por caracteres del conjuntoUnicode. Cualquier secuencia de caracteres se denomina string. Lasintaxis de XML describe la forma de combinar strings para creardocumentos XML bien formados.! XML distingue maysculas y minsculas, y por tanto no es lo mismo

    "ELEMENT" que "element".

    Las marcas se parecen a las de HTML. Empiezan por '

  • Servicios Telemticos Avanzados. Tema 3-2 11

    Prlogo de un documento XML

    Los documentos XML estn divididos en dos partes principales: unprlogo y una instancia de documento.

    El prlogo est compuesto de una declaracin XML y una declaracinde tipo de documento, y ambas son opcionales. Este es un ejemplo:!

    !

    Este prlogo dice que el documento se ajusta a XML versin 1.0, y esuna instancia de un determinado tipo de documento, DOCBOOK.

  • Servicios Telemticos Avanzados. Tema 3-2 12

    Contenido de un documento XML

    El contenido real del documento XML se encuentra en la instancia deldocumento. Este es un ejemplo de documento XML:!

    Eduardo [email protected]

    Humberto [email protected]

    Ejemplo de Memo

    Humberto, te aseguro que no quera

    usar el ejemplo tpico de Memo, pero no se me ocurra otra cosa.

    prlogo

    instancia dedocumento

  • Servicios Telemticos Avanzados. Tema 3-2 13

    rbol sintctico

    Parser XML: genera el rbol sintctico

    memo from name: Eduardo...

    email: edumart@...

    to name: Humberto...

    email: humberto@...

    subject: Ejemplo de...

    body paragraph: Humberto...

  • Servicios Telemticos Avanzados. Tema 3-2 14

    Elementos y atributos XML (1)

    Los elementos XML se dividen en dos categoras: los quetienen contenido y los que son vacos. Ejemplo de elementocon contenido:!

    Este es el ttulo!

    Los elementos XML sin contenido, o elementos vacos,tienen este aspecto:!

    Los atributos son una forma de adjuntar caractersticas opropiedades a los elementos de un documento. Los atributostienen nombre y valor.

  • Servicios Telemticos Avanzados. Tema 3-2 15

    Elementos y atributos XML (2)

    A veces, un elemento con subelementos puede ser modelado deforma equivalente con un elemento vaco con atributos. Acontinuacin se dan tres formas de modelar un elemento persona deun mensaje de correo:

    !

    Eduardo Martinez

    [email protected]

    Eduardo Martinez

  • Servicios Telemticos Avanzados. Tema 3-2 16

    CDATA y comentarios

    A veces puede resultar interesante indicarle al analizador XML que nointente interpretar una porcin de documento. Esto se hace marcandola seccin de la siguiente manera:!

    ! De esta forma, es posible incluir contenido que tiene caracteres

    empleados por XML para establecer el comienzo de las marcas:!

    Esto es un ejemplo de HTML dentro de XML

    Los prrafos se indican con esta marca

    ]]>!

    Comentarios similares a HTML:!

  • Servicios Telemticos Avanzados. Tema 3-2 17

    Document Type Definition (DTD)

    Documento bien formado: documento que cumple las reglassintcticas de XML.

    Es interesante definir los tipos de elementos permitidos, atributos yentidades, y puede expresar restricciones sobre sus combinacionesvlidas: se consigue con DTDs

    Documento vlido: documento que declara en su prlogo ciertoDTD, y que efectivamente lo cumple.

    Documento no vlido: documento que declara en su prlogo ciertoDTD, y que no lo cumple.

    Un documento no vlido puede ser bien formado

    Un documento bien formado puede no ser vlido ni no vlido

  • Servicios Telemticos Avanzados. Tema 3-2 18

    DTD interno: definido dentro del mismo fichero que eldocumento XML

    ]>

    Rock N. RobynJay Bird StreetBaltimoreMDUSA43214

  • Servicios Telemticos Avanzados. Tema 3-2 19

    DTD externo: contenido en otro fichero

    Si se indica "SYSTEM", a continuacin aparece una URLque localiza el fichero que contiene la DTD.

    ...

    Si se emplea "PUBLIC", se hace referencia a la DTD externamediante un identificador pblico nico:!

    ...

  • Servicios Telemticos Avanzados. Tema 3-2 20

    Definicin de elementos XML

    Los elementos son la base del lenguaje XML. Cadaelemento de un documento XML vlido debe conformar conun tipo de elemento declarado en el DTD.

    Las declaraciones de tipos de elementos deben comenzarcon el string "

  • Servicios Telemticos Avanzados. Tema 3-2 21

    Especificacin de contenido de elementos (1)

    EMPTY: indica que un elemento no puede tener contenido, como laetiqueta IMG de HTML:

    !

    ANY: el elemento puede contener cualquier tipo de sub-elemento odatos (string de caracteres). Un elemento con la especificacin decontenido ANY es completamente no estructurado.

  • Servicios Telemticos Avanzados. Tema 3-2 22

    Especificacin de contenido de elementos (2)

    #PCDATA se refiere a cualquier secuencia de caracteres que nocontiene elementos.

    Contenido mixto: si deseamos que el contenido de un elemento estformado por cierta combinacin estructurada de datos y sub-elementos, es necesario emplear expresiones regulares (*, +, ?) paradescribir la sintaxis de dicho contenido:

    !

  • Servicios Telemticos Avanzados. Tema 3-2 23

    Expresiones regulares

    Permiten definir una gramtica de forma recursiva Las expresiones regulares ms sencillas son:

    (#PCDATA) : caracteres (elemento): el contenido es una y slo una aparicin de elemento

    Expresiones regulares que indican cardinalidad: (ER?) : contenido opcional, es decir, vaco o cualquier contenido descrito con la expresin

    regular ER. (ER*): contenido con cardinalidad mxima no definida y mnima posiblemente 0 (ER+): contenido con cardinalidad mxima no definida y mnima 1

    Expresin regular que indica una opcin: (ER1 | ER2): contenido que puede ser cualquiera de los descritos por ER1 y los descritos por

    ER2

    Expresin regular que indica secuencia: (ER1, ER2, ER3, ...): contenido formado por la secuencia del contenido descrito por ER1,

    seguido por el descrito por ER2, ...

  • Servicios Telemticos Avanzados. Tema 3-2 24

    Atributos (1)

    Otra forma de aadir informacin a un elemento es definiendoatributos. La principal diferencia entre los atributos y el contenido deun elemento no vaco es que el valor de los primeros no puedecontener sub-elementos. !

    Los atributos se declaran para tipos de elementos especficos:!

    Las declaraciones de atributos empiezan con el string "

  • Servicios Telemticos Avanzados. Tema 3-2 25

    Atributos (2)

    Los atributos pueden tener valores por defecto:!

    Los atributos pueden declararse de forma que sus valorescumplan ciertas restricciones de tipo lxico o semntico. CDATA: significa "character data". El contenido es cualquier

    secuencia de caracteres que no contenga otros elementos.

    Enumerados: se emplea cuando un atributo debe tomar un valordentro de un conjunto discreto:

  • Servicios Telemticos Avanzados. Tema 3-2 26

    Atributos (3)

    !ID e IDREF: permite crear referencias cruzadas entreelementos.

    ...

    ...

    ...Vea para volver aleer sobre

    ...

  • Servicios Telemticos Avanzados. Tema 3-2 27

    Atributos (4)

    ENTITY: tipo de los atributos cuyo valor es el nombrede una entidad.!

    ...

    ...

    ...

  • Servicios Telemticos Avanzados. Tema 3-2 28

    Entidades (1)

    Son abreviaturas que representan un valor (su contenido).

    Pueden ser: Internas: su valor est indicado en el mismo DTD en el que se declaran.

    Externas: su valor est en documentos externos al DTD en el que sedeclaran.

    Generales: se emplean en DTDs y en documentos XML

    Parmetro: slo se emplean en DTDs

    Las entidades generales internas son las ms simples. Una entidadde este tipo es siempre una entidad analizada por el procesador XML.

  • Servicios Telemticos Avanzados. Tema 3-2 29

    Entidades (2)

    Ejemplo de declaracin de entidad general interna:

    ]>

    &xml;

    Ejemplo de declaracin de entidad general externa:!

  • Servicios Telemticos Avanzados. Tema 3-2 30

    Entidades (3)

    Una referencia a una entidad es un string formado por el smbolo '&'concatenado con el nombre de la entidad.

    El procesador XML se encarga de sustituir la referencia por sucontenido, que es automticamente analizado por el procesador, queasume que contiene texto XML.

    Mediante entidades es posible dividir un documento en mltiplesficheros, lo cual favorece la reutilizacin y el mantenimiento dedocumentos de gran tamao.

    Si queremos incluir en un documento una entidad que no es XML,debemos emplear el string 'NDATA' seguido de un identificador queindica el tipo de notacin de la entidad.

  • Servicios Telemticos Avanzados. Tema 3-2 31

    Entidades (4)

    Las entidades parmetro slo pueden aparecer en DTDs. La formade distinguirlas de las entidades generales es mediante un smbolo'%' en su declaracin, y una sintaxis diferente en su uso.

    !

    %entidad-ejemplo;

    ]>

    ...

  • Servicios Telemticos Avanzados. Tema 3-2 32

    Espacios de nombres Los vocabularios de marcas se deben reutilizar

    Un mismo documento puede usar varios vocabularios de marcas Posibilidad de colisin entre nombres de elementos y atributos

    Solucin: nombres universales

    Definicin: un espacio de nombres XML es una coleccin de nombres, identificada con unareferencia URI, que se emplean en documentos XML como nombres de elementos y nombres deatributos.

    Definicin: dos referencias URI que identifican espacios de nombres se consideran idnticas sison iguales carcter a carcter.

    Los nombres de elementos y atributos aparecen cualificados:

    prefijo:parte_local

    El prefijo corresponde a una referencia URI, que identifica el espacio de nombres

  • Servicios Telemticos Avanzados. Tema 3-2 33

    Declaracin de espacios de nombres

    El espacio de nombres se declara con un atributo especial de un elemento XML: El atributo de la forma xmlns:NCName=URI, declara que el elemento en el que aparece

    pertenece al espacio de nombres URI, y se usa el prefijo NCName para cualificar losnombres de elementos y atributos

    Un elemento puede tener varias declaraciones de espacios de nombres. Ejemplo: espacio de nombres http://ecommerce.org/schema con prefijo edi

    ... ...

  • Servicios Telemticos Avanzados. Tema 3-2 34

    Declaracin de espacios de nombres (2)

    Espacio de nombres por defecto: espacio de nombres declarado sin prefijo.Por defecto se considera que cualquier nombre sin prefijo pertenece a dichoespacio de nombres. Ejemplo:

    Manual de XML

    1234566789

  • Servicios Telemticos Avanzados. Tema 3-2 35

    Hojas de estilo

    XML no predefine la apariencia de los elementos. Se requiere una descripcinaparte mediante una hoja de estilo.

    XSL (eXtensible Stylesheet Language) es un lenguaje basado en XML,estandarizado por el W3C, para expresar hojas de estilo aplicables adocumentos XML. Est formado por tres partes: XSLT (eXtensible Stylesheet Transformations): lenguaje para especificar transformaciones

    de documentos XML

    XPath (XML Path Language): lenguaje para crear patrones para identificar elementos XMLsobre los que aplicar transformaciones

    Formating Objects: vocabulario XML de objetos de formateo, que describen de maneraindependiente el estilo a aplicar

  • Servicios Telemticos Avanzados. Tema 3-2 36

    Uso de XSL

    documentoXML

    hoja de estiloXSL

    documentoRTF

    ProcesadorXSL

    ProcesadorXSL

    ProcesadorXSL

    documentoPDF

    documentoHTML

    El lenguaje XSL sepuede usar para:

    Representar documentosXML en diferentesformatos

    Extraer parte delcontenido de undocumento XML

    Transformardocumentos XML entreesquemas

  • Servicios Telemticos Avanzados. Tema 3-2 37

    Hojas de estilo y documentos XML

    Un documento XML que quiera emplear cierta hoja de estilo debe indicar sulocalizacin mediante la siguiente instruccin en el prlogo:

    !

    Se pueden usar: En el visualizador: IExplorer 5 soporta el uso de hojas de estilo en documentos XML

    En el servidor de contenidos: Cocoon es un sistema de publicacin de documentos basadoen XML y XSL.

  • Servicios Telemticos Avanzados. Tema 3-2 38

    Objetos de formato

    Es un conjunto muy extenso de elementos y atributos querepresentan reas del documento de salida.

    Son especialmente tiles para convertir datos XML de tipotexto en representaciones binarias (como PDF).

    Java y XML

    Lo habitual es emplear etiquetas XHTML para definir elformato de los elementos XML (IExplorer no soporta objetosde formato)

  • Servicios Telemticos Avanzados. Tema 3-2 39

    Ejemplo

    Extracto de la hoja de estilo: Extracto del documento XML:

    Sue Meyer Cocina italiana

    Resultado HTML:Carlos Urruti: Cocina rpidaCarmen Lpez: 101 RecetasSue Meyer: Cocina italiana

  • Servicios Telemticos Avanzados. Tema 3-2 40

    Procesamiento de Documentos XML

    Una aplicacin que procese documentos XML debe analizarlos. Elanlisis se realiza usando libreras que implementan los analizadores.

    Existen dos tipos de analizadores XML: Analizadores simples, comprueban que los documentos XML son documentos bien

    formados. Analizadores de validacin, comprueban que los documentos son bien formados y

    vlidos XML de acuerdo a DTDs o esquemas.

    Otra clasificacin de los analizadores es la siguiente: Analizadores que tratan el documento como estructura plana (secuencialmente): el

    programador escribe los procedimientos a ejecutar durante el anlisis: etiqueta deapertura, etiqueta de cierre, etc.

    Analizadores que general un rbol de anlisis. El programador recorre el rbol y consultalas propiedades de los nodos, que representan elementos XML.

    Segundo tipo ms prctico, pero ms lento. Adems, los documentosgrandes pueden requerir excesiva memoria para generar el rbol.

  • Servicios Telemticos Avanzados. Tema 3-2 41

    SAX: Simple API for XML

    SAX es una API estndar para el anlisis de documentos XML. Apache Xercesincluye varias clases para emplearla.

    El anlizador SAX trata de forma secuencial a los documentos XML, e invoca acdigo escrito por el programador cuando se producen eventos importantes amedida que recorre el documento.

    El programador registra handlers en el parser SAX. Un handler es un mtodoescrito por el programador, cuya signatura est definida en un interfaz SAX, yque es invocado por el parser SAX al producirse cierto evento.

    Existen cuatro interfaces de handlers: org.xml.sax.ContentHandler: eventos estndares relacionados con los datos. org.xml.sax.ErrorHandler: eventos que notifican errores de anlisis. org.xml.sax.DTDHandler: eventos de anlisis de DTDs. org.xml.sax.EntityResolver: eventos para resolver entidades externas en documentos XML.

    El parser SAX ofrece mtodos setContentHandler(), setErrorHandler()... pararegistrar clases que implementan los interfaces anteriores.

  • Servicios Telemticos Avanzados. Tema 3-2 42

    Creacin de parser SAX (1)import java.io.IOException;import org.xml.sax.SAXException;import org.xml.sax.Attributes;import org.xml.sax.Locator;import org.xml.sax.XMLReader;import org.xml.sax.ContentHandler;import org.xml.sax.ErrorHandler;import org.apache.xerces.parsers.SAXParser;...public void performDemo(String uri) {

    System.out.println("Parsing XML File:" + uri );ContentHandler contentHandler = new MyContentHandler();ErrorHandler errorHandler = new MyErrorHandler();try {XMLReader parser = new SAXParser();parser.setContentHandler(contentHandler);parser.setErrorHandler(errorHandler);

    parser.parse(uri);} catch (IOException e) {

    System.out.println("Error reading URI:" + e.getMessage());} catch (SAXException e) {

    System.out.println("Error in parsing: " + e.getMessage());

    }}

  • Servicios Telemticos Avanzados. Tema 3-2 43

    Creacin de parser SAX (2)class MyContentHandler implements ContentHandler {

    private Locator locator;

    public void setDocumentLocator(Locator locator) {// Locator tiene los mtodos

    // getLineNumber() y getColumnNumber() this.locator = locator; }

    public void startDocument() throws SAXException { System.out.println("Parsing begins..."); }

    public void endDocument() throws SAXException { System.out.println("....Parsing ends."); }

    public void processingInstruction(String target, String data) throws SAXException { System.out.println("PI: Target:" + target + " and Data: " + data); }

  • Servicios Telemticos Avanzados. Tema 3-2 44

    Creacin de parser SAX (3) public void startPrefixMapping(String prefix, String uri) { System.out.println("Mapping starts for prefix " +prefix + " mapped to URI " + uri); }

    public void endPrefixMapping(String prefix) { System.out.println("Mapping ends for prefix " +prefix); }

    public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException{ System.out.print("startElement: " + localName); if (!namespaceURI.equals("")) { System.out.println(" in namespace "+ namespaceURI + " (" + rawName + ")"); } else { System.out.println(" has no associated namespace"); } for (int i = 0; i < atts.getLength(); i++) System.out.println(" Attribute: " + atts.getLocalName(i)+ "=" + atts.getValue(i)); }

  • Servicios Telemticos Avanzados. Tema 3-2 45

    Creacin de parser SAX (4)

    public void endElement(String namespaceURI, String localName, String rawName) throws SAXException { System.out.println("endElement: " + localName + "\n"); }

    public void characters(char[] ch, int start, int end) throws SAXException { String s = new String(ch, start, end); System.out.println("characters: " + s); }

    public void ignorableWhitespace(char[] ch, int start, int end) throws SAXException { }

    public void skippedEntity(String name) throws SAXException { }}

  • Servicios Telemticos Avanzados. Tema 3-2 46

    Creacin de parser SAX (5)

    class MyErrorHandler implements ErrorHandler { public void warning (SAXParseException exception) throws SAXException { System.out.println("**Parsing Warning**\n" + "Line: " +

    exception.getLineNumber() + "\n" + "URI: " + exception.getSystemId() + "\n" + "Message: " + exception.getMessage());

    throw new SAXException("Warning encountered"); }

    public void error (SAXParseException exception) throws SAXException { // Errores de validacin System.out.println("**Parsing Error**\n" + "Line: " +

    exception.getLineNumber() + "\n" + "URI: " + exception.getSystemId() + "\n" + "Message: " + exception.getMessage());

    throw new SAXException("Error encountered"); }

  • Servicios Telemticos Avanzados. Tema 3-2 47

    Creacin de parser SAX (6)

    public void fatalError (SAXParseException exception) throws SAXException { // Errores de XML mal formado System.out.println("**Parsing Fatal Error**\n" + "Line: " +

    exception.getLineNumber() + "\n" + "URI: " + exception.getSystemId() + "\n" + "Message: " + exception.getMessage());

    throw new SAXException("Fatal Error encountered"); }}

  • Servicios Telemticos Avanzados. Tema 3-2 48

    Configuracin del parser

    SAX 2.0 incorpora un mecanismo estndar y extensible para la configuracin decaractersticas de un parser XML (dada la continua evolucin de XML)

    La configuracin se realiza con el mtodo setFeature("[URI]", true) del interfazXMLReader.

    URI es el identificador que representa la caracterstica que se est configurando.SAX 2.0 define las siguientes:

    Namespace Processing: http://xml.org/sax/features/namespaces. Activa o desactiva elprocesamiento de namespaces (startPrefixMapping, endPrefixMapping, y ciertos parmetros destartElement y endElement).

    Validacin: http://xml.org/sax/features/validation. Activa o desactiva la validacin (y por tanto lasllamadas al interfaz ErrorHandler)

    Procesamiento de entidades externas generales:o http://xml.org/sax/features/external-general-entities

    Procesamiento de entidades externas parmetroo http://xml.org/sax/features/external-parameter-entities

    Los parsers pueden definir sus propios URIs de configuracin: Validacin con esquemas: http://xml.apache.org/xerces2-j/features.html

  • Servicios Telemticos Avanzados. Tema 3-2 49

    DOM: Document Object Model

    DOM es una especificacin del W3C (a diferencia de SAX) independiente de la plataforma quedefine una serie de interfaces basados en objetos que permiten crear programas y scripts queaccedan y actualicen al contenido, la estructura y la presentacin de los documentos.

    Existen "bindings" de DOM a diversos lenguajes de programacin, entre ellos Java. En Java, losprogramadores emplean libreras que implementan el paquete org.w3c.dom

    El resultado del anlisis es un org.w3c.dom.Document, un objeto que representa un rbol deanlisis del documento. Por tanto, hasta que no finaliza el anlisis no puede comenzar elprocesamiento:

    public void performDemo(String uri) {DOMParser parser = new DOMParser();

    try {parser.parse(uri);org.w3c.dom.Document doc = parser.getDocument();// Procesamiento

    } catch (Exception e) { ... } }

  • Servicios Telemticos Avanzados. Tema 3-2 50

    Uso de un rbol DOM

    Los nodos de un rbol DOM pueden ser de diversos tipos, de acuerdo a lajerarqua de interfaces del paquete org.w3c.dom

    Document

    DocumentFragment

    DocumentType

    ProcessingInstruction

    CharacterData

    Element

    Attr

    EntityReference

    Entity

    Notation

    Node

    Comment

    Text

    CDATASection

    Determinar el tipo de un nodo:

    Node node;...switch (node.getNodeType()) {case Node.DOCUMENT_NODE:// Objeto DocumentDocument doc =(Document)node;break;case Node.ELEMENT_NODE:// Objeto ElementElement e = (Element)node;break;case Node.TEXT_NODE:// Objeto TextText t = (Text)node;break;... }

  • Servicios Telemticos Avanzados. Tema 3-2 51

    Impresin del rbol de anlisis (1)public void performDemo(String uri) {

    System.out.println("Parsing XML File: " + uri);DomParser parser = new DOMParser();try { parser.parse(uri);

    Document doc = parser.getDocument();printNode(doc, "");

    } catch (IOException e) {System.out.println("Error reading URI: " + e.getMessage());

    } catch (SAXException e) {System.out.println("Error in parsing: " + e.getMessage());

    } }public void printNode(Node node, String indent) { switch(node.getNodeType()) { case Node.DOCUMENT_NODE:

    System.out.println("\n"); Document doc = (Document)node; DocumentType docType = doc.getDoctype(); System.out.print(""); printNode(doc.getDocumentElement(), ""); break;

  • Servicios Telemticos Avanzados. Tema 3-2 52

    Impresin del rbol de anlisis (2)case Node.ELEMENT_NODE: String name = node.getNodeName(); System.out.print(ident + ""); NodeList children = node.getChildNodes();

    // Recursividad por cada hijo if (children != null) { for (int i = 0; i < children.getLength(); i++) {

    printNode(children.item(i), ident + " "); } } System.out.println(ident + ""); break;case Node.TEXT_NODE:case Node.CDATA_SECTION_NODE: System.out.print(node.getNodeValue()); break; } }

  • Servicios Telemticos Avanzados. Tema 3-2 53

    Generacin de documentos XMLimport org.apache.xerces.dom.DOMImplementationImpl;import org.w3c.dom.*;

    // construyo el documentoDOMImplementation domImpl = new DOMImplementationImpl();

    Document doc = domImpl.createDocument(uri_nombres, "respuestaPerfil", null);

    // RaizElement _root = doc.getDocumentElement();

    _root.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", uri_nombres + " " + url_esquema);

    Element _id = doc.createElementNS(uri_nombres, "id");_id.appendChild(doc.createTextNode(cod_propio));_root.appendChild(_id);

    Element _nombre = doc.createElementNS(uri_nombres, "nombre");_nombre.appendChild(doc.createTextNode(nombre));_root.appendChild(_nombre);