Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/10/2007, 11:28
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 1 mes
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Gracias, gracias. Espero que sirva a alguien
Sigamos

El componente MSXML. Hurgando en el laberinto.

El componente de Microsoft dispone de una serie de objetos dependiendo de lo que queramos hacer con nuestro archivo XML o de donde lo leemos. Principalmente son dos:

-HTTPREQUEST
-XMLDOM

El primero de ellos es ampliamente conocido por su uso para trabajar de forma asíncrona con el servidor (es más conocido como AJAX) y nos permite leer archivos desde diferentes localizaciones: una página desde un sitio web, procesar una página dinámica, etc. Este nos devuelve texto plano (ya sea maqueteado o no) o un documento XML: un XMLDOM.

Como vemos, el segundo, el objeto XMLDOM es el objeto que más nos interesa. Es el objeto que va a guardar nuestro documento XML el cual podemos crearlo o bien desde el objeto HTTPREQUEST o bien como un objeto vacío listo para ser usado y cargado. Me recuerda mucho al objeto ADO Recordset. El cual podemos también recibirlo desde una conexión (Connection) o crearlo vacío y listo también para ser usado (lo veremos más adelante )

Entonces, el objeto que nos interesa es el XMLDOM que lo crearemos asi:

Set objXML = Server.CreateObject(“Microsoft.XMLDOM”)

También podemos hacerlo así:

Set objXML = Server.CreateObject(“MSXML2.DOMDocument.3.0”)

Es exactamente lo mismo. La única diferencia es que el segundo contiene algunos métodos más para trabajar con XSL (una forma de maquetar el resultado de un XML) pero como no va a ser así, nos olvidamos de esta segunda forma de instanciar el objeto.

Documentos XML: Centrando nuestra atención (I)

Un archivo XML tiene esta forma:

<?xml version="1.0" encoding="iso-8859-1"?>
<Idioma>
<Nodo atributo=”valor”>Cabecera</Nodo>

</Idioma>

Esto es lo más básico: Su definición (su Content-Type y su charset) y el documento (lo que haya entre <Idioma> e </Idioma>)

El documento está formado por nodos:

<Nodo atributo=”valor”>Cabecera</Nodo>
<Nodo atributo=”valor”>Cabecera</Nodo>
<Nodo atributo=”valor”>Cabecera</Nodo>

<Nodo atributo=”valor”>Cabecera</Nodo>

Los Nodos son el núcleo del documento XML. Estos disponen de propiedades (de forma similar a como asignamos propiedades a los tags HTML: <a ref.=””> ref. es una propiedad del tag a ) y de texto (lo que hay entre el tag de apertura y el de cierre)

¿Qué es lo que pasa si queremos asignar más cosas a un nodo? Pues hacemos subnodos (o childNodes como dicen en inglés). Por ejemplo. Imagina que queremos poner una poesia en la página con un par de fotos pero que esta no sea siempre la misma. Lo podríamos hacer añadiendo al documento XML lo siguiente:

Código:
  <?xml version="1.0" encoding="iso-8859-1"?>
  <Idioma>
     <Nodo atributo=”valor”>Cabecera</Nodo>
              
     <poesias>
           <poesia id=”1”>
                    <autor>Pablo Neruda</autor>
                    <titulo>campesina</titulo>
                    <texto>
                         ……
                    </texto>
           </poesia>
               ….
           <poesia id=”N”>
                   <autor>XXXXX</autor>
                   <titulo>XXXXXXXXX</titulo>
                   <texto>
                      ……
                   </texto>
           </poesia>
     </poesias>
  </Idioma>
Podemos hacer tantos subnodos como queramos. Lo que si que has de tener en cuenta es mantener bien cerrados aquellos nodos que abras. En pocas palabras mantener el documento XML bien-formado (well-formed)

Hay otro tipo de nodo que puede ser de utilidad pero que no vamos a utilizar en este manual. Es este

<nodo id=”1” value=”unvalor” />

Como veis no contiene ningun tag de cierre. Sin embargo si que contiene una marca de cierre. Es muy parecido al tag IMG de HTML o la los INPUT.

Los documentos XML disponen de muchas más formas de estructurar la información pero nos vamos a centrar en estas. Son las más simples; si queremos ahondar en el XML, un buen sitio para empezar sería este: http://es.wikipedia.org/wiki/XML

XMLDOM: Centrando nuestra atención (y II)

Ya tenemos claro lo que es un documento XML y como se hace. Ahora nos toca leerlo y procesarlo desde ASP. Para eso usaremos, como dijimos antes, el objeto XMLDOM.

Como vimos anteriormente, XML es un documento formado por nodos. ¿Qué és entonces XMLDOM? Pues eso mismo: un objeto documento formado por objetos nodos y estos a su vez formados por otros objetos nodos y asi hasta que no haya más nodos. ¿Comprendéis la idea? Podemos ir diseccionando el documento XML en partes mas pequeñas.

Empecemos a crear uno de estos objetos:

Dim objXML

Set objXML = Server.CreateObject(“Microsoft.XMLDOM”)

Necesitamos decirle que el método de sincronización con los datos no es asíncrono. O sea, que lea de una vez y no se quede esperando.

objXML.async = false

Ahora cargamos el archivo XML. Este objeto no es como el HTTPREQUEST. Este necesita que el archivo esté de forma local (a no ser, claro está, que venga directamente de un objeto HTTPREQUEST) en nuestro servidor:

objXML.Load(“c:\missitiosweb\misitioweb\archivo.XM L”)
o usar el Server.MapPath


En el próximo post hablaré de la gestión de errores para que no nos pete la página y nuestros primeros accesos a los datos
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -