Miércoles, 24/04/2024, 19:20:09
Universidad de Londres - Informática
 
Menú del sitio

Asignaturas

Recursos

Visitas

Estadística

Total en línea: 1
Invitados: 1
Usuarios: 0

Inicio » 2011 » Noviembre » 3 » JAVA Y XML
00:23:11
JAVA Y XML
[url=http://www.google.com.mx/imgres?q=xml&hl=es&gbv=2&biw=1024&bih=499&tbm=isch&tbnid=ZtDQhsCJCfp-JM:&imgrefurl=http://juliangamboa.wordpress.com/2010/08/30/xml/&docid=xaJK7DUbq7QQ4M&imgurl=http://juliangamboa.files.wordpress.com/2010/08/xml1.gif&w=529&h=326&ei=GCGyTpepDYjqtgeY5q3hBg&zoom=1&iact=hc&vpx=349&vpy=189&dur=887&hovh=176&hovw=286&tx=125&ty=60&sig=102507395085237895155&page=1&tbnh=123&tbnw=185&start=0&ndsp=11&ved=1t:429,r:2,s:0]My WebPage[/url]

AUTORES: IVAN TLATELPA Y GABRIEL JARAMILLO

DOCUMENTO XML "BIEN FORMADO"

Todos los documentos XML deben estar bien formado, lo que significa que se debe cumplir lo siguiente:
• si no se utiliza DTD, el documento debe comenzar con un Declaración de Documento Standalone
• todas las etiquetas deben estar balanceadas: esto es, todos los elementos que contengan datos de tipo carácter deben tener etiquetas de principio y fin
• todos los valores de los atributos deben ir entrecomillados (el carácter comilla simple [el apóstrofe] puede utilizarse si el valor contiene caracteres comillas dobles, y viceversa): si necesitas ambos, utiliza ' y "
• cualquier elemento VACÍO (p.e. aquellos que no tienen etiqueta final como <IMG>, <HR>, y <BR> y otros de HTML) deben terminar con '/>' o debes hacerlos no VACÍOS añadiéndoles una etiqueta de fin.
• no debe haber etiquetas aisladas (< ó &) en el texto (p.e. debe darse como < y &), y la secuencia ]]> debe darse como ]]> si no ocurre esto como final de una sección marcada como CDATA;
• los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas, como en el resto de SGML);
• Los ficheros bien-formados sin-DTD pueden utilizar atributos en sus elementos, pero éstos deben ser todos del tipo CDATA, por defecto. El tipo CDATA (character DATA) son caracteres..
Según la especificación de XML del W3C, un documento XML está bien formado si:
• Tomado como un todo, cumple la regla denominada "document".
• Respeta todas las restricciones de buena formación dadas en la especificicación.
• Cada una de las entidades analizadas que se referencia directa o indirectamente en el documento está bien formada.
Cumplir la regla "document" antes mencionada significa:
• Que continene uno o más elementos.
• Hay exactamente un elemento, llamado raíz, o elemento documento, del cual ninguna parte aparece en el contenido de ningún otro elemento.
• Para el resto de elementos, si la etiqueta de comienzo está en el contenido de algún otro elemento, la etiqueta de fin está en el contenido del mismo elemento. Es decir, los elementos delimitados por etiquetas de principio y final se anidan adecuadamente mutuamente.
Estructura jerárquica de los elementos
Los documentos XML deben tener una estructura jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Esto significa que los elementos deben estar correctamente anidados y que los elementos no se pueden solapar entre ellos. Además los elementos con contenido deben estar correctamente cerrados.
Ejemplo:
<?xml version="1.0" ?
<nombre>Richal </nombre>
Sólo puede haber un elemento raiz, en el que están contenidos todos los demás, es decir, la jerarquía de elementos XML sólo puede tener un elemento inicial.
Ejemplo:
<?xml version="1.0" ?>
<alumnos>
<nombre>Richal</nombre>
<email>richal@ejemplo.com</email>
</alumnos>
Tipos de letra y fines de línea
El XML, a diferencia del HTML, es "case sensitive", es decir, trata a las mayúsculas y las minúsculas como caracteres diferentes. Si un elemento de XML está definido como "Elemento", no podemos usar "elemento" para referirnos a él:
Ejemplo con Case sensitive y solapamiento.
<?xml version="1.0" ?>
<alumnos>
<Nombre>Richal</nombre>
<email>richal@ejemplo.com</email>
<nombre>Chicho</Nombre>
<email>chicho@ejemplo.com</email>
</alumnos>
En la edición de documentos XML , por claridad, se suele organizar en varias líneas, que, normalmente, se componen de carácter de fin de línea y otro de retorno de carro. Un parser XML pasa únicamente a la aplicación el caracter de fin de línea.

ESPACIOS EN BLANCO

En la edición de documentos XML, suele ser conveniente utilizar "espacios en blanco" (espacios, tabuladores y líneas en blanco), que normalmente son innecesarios en una versión distribuible a través de la red, aunque también existen ocasiones en los que es deseable la representación de esos "espacios en blanco" (por ejemplo, código fuente).
Para que las aplicaciones preserven la representación de esos espacios en blanco en un elemento se utiliza el atributo xml:space que puede tomar los valores preserve o default, para conservar los espacios en blanco o aplicar el tratamiento por defecto, respectivamente.
Ejemplo
<?xml version="1.0"?>
<textos>
<cita> A quien madruga Dios le ayuda ?</cita>
<poema xml:space="preserve">
El monte es verde,
el agua incolora
y a mi no se me ocurre una rima
</poema>
</textos>

ANALIZADOR SAX

SAX (Simple API for XML) funciona por eventos y métodos asociados. A medida que el analizador va leyendo el documento xml y encuentra (los eventos) los componentes del documento 1 (elementos, atributos, valores, etc) o detecta errores, va invocando a las funciones que ha asociado el programador.

Los analizadores se pueden adaptar y seleccionar diferentes opciones, entre ellas si ha decomprobarse o no la validez de un documento xml respecto a su definición (el DTD). Esta validación añade una comprobación y por tanto una garantía más, pero también consume más recursos y ralentiza el procesamiento del documento xml. En cada situación habrá que valorar qué opciones son adecuadas.
El analizador va recibiendo una serie de eventos (retrollamadas), al estilo de los listener de AWT y Swing, a medida que va leyendo las etiquetas. Un ejemlplo
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;

/***************************************************************************
* Manejador de eventos SAX
***************************************************************************/
public class Manejador extends DefaultHandler {

public void setDocumentLocator(Locator loc) {
}
public void startDocument() {
}
public void endDocument() {
}
public void processingInstruction(String destino, String datos) {
}
public void startPrefixMapping(String prefijo, String uri) {
}
public void endPrefixMapping(String prefijo) {
}
public void startElement(String espacioNombres, String nomLocal, String nomCompleto, Attributes atrs) {
System.out.println("Nombre local:" + nomLocal + " Nombre completo:" + nomCompleto );
for ( int i = 0; i < atrs.getLength(); i++) {
System.out.println(" ATRIB. Nombre local: " + atrs.getLocalName(i) );
System.out.println(" ATRIB. Tipo: " + atrs.getType(i) );
System.out.println(" ATRIB. Valor: " + atrs.getValue(i) );
}
}
public void endElement(String espacio, String nomLocal, String nomCompleto) {
}
public void characters(char[] ch, int inicio, int longitud) {
String cad = new String( ch, inicio, longitud);
System.out.println(" Caracteres: " + cad );
System.out.println(" Inicio:" + inicio + " Longitud:" + longitud );
}
public void ignorableWhitespace(char[] ch, int comienzo, int fin) {
}
public void skippedEntity(String nombre) {
}
public void error(SAXParseException exc) throws SAXException {
mostrarError( exc, "Se encontró un error");
}
public void fatalError(SAXParseException exc) throws SAXException {
mostrarError( exc, "Se encontró un error fatal");
}
public void mostrarError( SAXParseException exc, String aviso ) throws SAXException {
System.out.println( aviso + ". Línea: " + exc.getLineNumber() );
System.out.println( "URI: " + exc.getSystemId() );
System.out.println( "Mensaje: " + exc.getMessage() );
throw new SAXException(aviso);//
}
}

EVENTOS SAX
Una de las principales ventajas de SAX es que esta basado en eventos, esto garantiza que el procesamiento de información requiera muy pocos recursos comparado con DOM.
El término evento se refiere al acontecimiento de sucesos en un fragmento/documento XML, este puede ser el inicio de un elemento, la terminación de éste , el inicio de espacio o algún otro. Los principales eventos utilizados en SAX son startElement, endElement y characters, estos representan la lógica que deberá ser ejecutada al llevarse acabo cada evento.
Cuando se llevan a cabo los eventos? Observe el siguiente fragmento de XML donde se indican los respectivos eventos:

Los pasos anteriores son llevados acabo para todo elemento dentro del documento/fragmento XML, como fue mencionado, pueden ser definidos otros eventos dentro del programa que serian ejecutados/disparados según fuera requerido. Es dentro de estas funciones y todas aquellas definidas dentro del programa que se define que debe ser hecho con la información del documento XML.
Aunque el uso de SAX presenta una manera eficiente y rápida de procesar información en XML, sus mismas características pueden ser una grave deficiencia, debido a que una vez suscitado el evento en cuestión no es posible retroceder hacia éste, si al momento de estar procesando "x" elemento es necesario hacer referencia a otro antes analizado esto no es posible.

CREACION DE UN DOM
Se cran en tres pasos:
 createElement(etiqueta): crea un nodo de tipo Element que representa al elemento XHTML cuya etiqueta se pasa como parámetro.
 createTextNode(contenido): crea un nodo de tipo Text que almacena el contenido textual de los elementosXHTML.
 nodoPadre.appendChild(nodoHijo): añade un nodo como hijo de otro nodo. Se debe utilizar al menos dos veces con los nodos habituales: en primer lugar se añade el nodo Text como hijo del nodo Element y a continuación se añade el nodo Element como hijo de algún nodo de la página.

MANIPULACION DE UN DOM
A la hora de manipular el DOM tenemos el siguiente listado de expresiones:
• document.getElementById(id_elemento);: Permite acceder al primer elemento con id “id_elemento”
• document.getElementsByTagName(elemento): Devuelve una lista de nodos con todos los elementos con el nombre “elemento.
En caso de querer hacer referencia a un elemento específico, por ejemplo el primero, podríamos hacer uso de la expresión: document.getElementsByTagName(elemento)[0]
• document.createElement(elemento);: Crea un nuevo elemento en el DOM.
• document.createTextNode(“texto”);: Genera un nuevo nodo de texto.
• appendChild: Añade un nodo hijo a un padre concreto. Por ejemplo:
var nuevoEnlace = document.createElement("a");
var nodoTexto = document.createTextNode("Esto es un enlace");
nuevoEnlace.appendChild(nodoTexto);
• elementoPadre.insertBefore(nuevoElemento, elementoReferenciado);: Inserta un elemento justo antes de otro que le especifiquemos.
• innerHTML: Permite introducir HTML dentro de una etiqueta.
• parentNode: Selecciona el nodo padre de un nodo en concreto.
• removeChild: Elimina un nodo hijo
• getAttribute(propiedad);: Devuelve el valor de una propiedad que le pasamos por parametro
• ancla.style.display: Devuelve un estilo concreto de un elemento
• document.getElementsByClassName(names);: Retorna un conjunto de elementos los cuales poseen la clase “names”.
FUENTES:
http://www.jmocana.eu/2011/06/01/manipulacion-del-dom-con-javascript/
http://www.librosweb.es/javascript/capitulo5/creacion_y_eliminacion_de_nodos.html
http://studies.ac.upc.edu/EPSC/FSD/FSD-SAX_DOM.pdf
http://en.wikipedia.org/wiki/XML
Categoría: Blog de resùmenes - Sistemas multiplataforma | Visiones: 1061 | Ha añadido: gabriel | Ranking: 0.0/0
Total de comentarios: 6
6 noealejandro  
0
Por cierto, las etiquetas para encerrar el código son:

[ code ]
Aquí escriben el código
[ /code ]

Dejé un espacio en blanco junto a los corchetes para que apareciera. Uds. se lo quitan para que lo lea como etiqueta.

5 noealejandro  
0
Muy bien Tlatelpa y Jaramillo.

Analizaremos el tema en el foro. Sólo un detalle, hay una etiqueta para indicar el código. De esta manera, la información es más legible. Por ejemplo:

Code

public class Manejador extends DefaultHandler {  
  public void setDocumentLocator(Locator loc) {  
  }  
  public void startDocument() {  
  }  
  public void endDocument() {  
  }  
  public void processingInstruction(String destino, String datos) {  
  }  
  public void startPrefixMapping(String prefijo, String uri) {  
  }  
  public void endPrefixMapping(String prefijo) {  
  }
  //...


Cómo ven, facilita más la lectura.

Saludos.

4 Carlos  
0
un poco tecnico en los conceptos pero la idea la deja entendible, falto una imagen para que sea un poco mas llamativo pero bien en general

3 omar  
0
Como dicen mis compañeras...¬¬...buena informacion y bastante entendible...una imagen le quedaria para llamara la atencion pero en cuanto contenido cumple mjy bien

2 getsemani  
0
la informacion esta completa y entendible solo le falto la imagen

1 mayrita  
0
Cumple todos los temas solicitados por el profesor, bien explicado como se crea cada uno de ellos y explica que es cada uno, la única observación seria que le agregaran alguna imagen para que el tema llame mas la atención.

Solamente los usuarios registrados pueden añadir los comentarios.
[ Registrarse | Entrada ]
Buscar

Foro PE
  • Clase en línea - miércoles 9 (4)
  • Tarea 2 (6)
  • ¿Qué es obo? (2)

  • Foro DSM
  • TEMAS A DESARROLLAR POR EQUIPO (13)
  • Servicios Web XML o Web Services (1)
  • RMI (Java Remote Method Invocation) (0)

  • Compartir en

    Mini-chat
    200

    Copyright MyCorp © 2024Crear un sitio web gratis con uCoz