Sie sind auf Seite 1von 12

CURSO DE VB

CAPTULO 151

ndice de contenido
UN POCO DE XML Y XSL................................................................................................................2
INTRODUCCIN...........................................................................................................................2
QU ES XML Y XSL?..................................................................................................................2
PREPARANDO NUESTRA BASE DE DATOS.............................................................................3
EXPORTANDO A XML..................................................................................................................4
PROCEDIMIENTO....................................................................................................................4
ARCHIVOS DE RESULTADO..................................................................................................6
MANIPULANDO EL ARCHIVO XML....................................................................................8
EXPORTANDO UN FORMULARIO........................................................................................8
TRASPASANDO LOS DATOS A UNA APLICACIN EXTERNA...........................................10
IMPORTANDO XML...................................................................................................................10
PARA FINALIZAR.......................................................................................................................11

1 La BD donde estn los ejemplos de este captulo os la podis bajar aqu.

1
Vistame en http://siliconproject.com.ar/neckkito/
UN POCO DE XML Y XSL

INTRODUCCIN
Por qu le dedico un captulo a XML y XSL? Bsicamente
porque se trata de un lenguaje ampliamente extendido que,
quizs, en algn momento nos pueda sacar de un apuro.

Imaginemos que tenemos una base de datos con


informacin. Por los motivos que sean necesitamos trabajar
con una aplicacin XXX

Qu ocurre? Que nuestra aplicacin XXX no puede leer datos directamente de Access.
Lgicamente, Access tampoco puede leer datos de XXX.

Y cmo podramos poner un parche a la anterior situacin? Pues la respuesta podra ser:
utilicemos un lenguaje que entiendan ambas aplicaciones.

Y, curiosamente, el lenguaje XML es un lenguaje ampliamente extendido que suele ser


reconocido por un gran nmero de programas.

Por cierto, cuando hablo de una aplicacin XXX no me refiero a una sper-aplicacin que nos
haya costado montones de dinero (que tambin podra serlo, claro). Me refiero a algo tan
comn como nuestro querido Internet Explorer, por ejemplo.

Debo deciros que, aunque chapurreo un poco XML, no es un lenguaje que controle. En
definitiva, que la idea que deberais sacar de este captulo es que se puede, con Access,
interactuar con archivos XML, y eso puede sernos de utilidad. Al que le guste mucho el sistema
pues no tendr ms remedio que estudiar por su cuenta esto de XML. Quiz, quien se anime,
pueda darme, en un futuro no muy lejano, clases a m... de manera gratuita, claro... je, je,
je...

Entremos en materia.

QU ES XML Y XSL?
XML corresponde a las palabras eXtensible Markup Language, con una espectacular traduccin
ma que es lenguaje estructurado por marcas.

XML est muy relacionado con Internet, y constituye uno de los lenguajes ms estandarizados
de intercambio de datos a travs de la Red.

Y por qu digo por marcas? Porque, asombrosamente (ji, ji...), XML utiliza marcas en su
desarrollo.

Seguimos confusos? Imagino que todo el mundo ha visto cdigo html. HTML utiliza tambin
marcas, que son las que definen lo que son los metadatos de la pgina web, lo que es la
cabecera, el cuerpo, si una frase que aparece est en negrita, o en itlica, etc. Esas marcas
vienen delimitadas por los smbolos (<) y (>).

Por ejemplo, y hablando de htlm, en el siguiente cdigo podemos ver las marcas head, tittle, y
body:

2
Vistame en http://siliconproject.com.ar/neckkito/
<html>
<head>
<tittle>ESTO ES EL TTULO</tittle>
</head>
<body>Esto es el cuerpo</body>
</html>

Este es un lenguaje estructurado porque, por decirlo de


alguna manera, se utiliza una estructura que delimita
claramente el inicio y el fin de cada marca.

<head> Empieza la cabecera, y


</head> Finaliza la cabecera.

Todo lo que hay entre estas dos etiquetas pertenece a la cabecera. Por ello, el ttulo pertenece
a la cabecera, y, a su vez, la frase ESTO ES EL TTULO pertenece al ttulo, porque tenemos
una etiqueta de apertura <tittle> y otra de cierre </tittle>, y nuestra frase se halla entre
ambas.

He utilizado html porque creo que todo el mundo ha visto alguna vez en su vida un cdigo
html, y resulta muy fcil de entender.

Pues XML sigue el mismo patrn. No vamos a detenernos a examinar los requisitos de XML
porque no es objecto de este curso, pero os comentar que, a efectos de este captulo:

La primera lnea debe indicar que se trata de XML y qu tipo de codificacin se va a


emplear. Eso se consigue a travs de:

<?xml version = 1.0 enconding = UTF-8 ?>

La segunda lnea debe llamar a la informacin de presentacin (si queremos utilizarla,


porque no es obligatoria), es decir, al archivo XSL (lo que lo hace bonito a la vista, en
definitiva). Veremos cmo lo llamamos un poco ms adelante.

En uno de los ejemplos que veremos ms adelante nos detendremos a comentar el tema de
las marcas de un archivo XML.

Visto lo anterior, podremos deducir que XSL es una instancia de XML que permite gestionar la
presentacin de cmo veremos los documentos XML

Para finalizar comentaros que para editar y manipular un archivo XML necesitamos un potente
programa llamado Bloc de notas (je, je...), aunque nos servira cualquier editor de texto (yo
os recomiendo el Notepad++, que adems es portable).

PREPARANDO NUESTRA BASE DE DATOS


Vamos a crearnos una BD en blanco para desarrollar este captulo. En ella introduciremos una
tabla, que llamaremos TDatos, que tendr la siguiente estructura:

3
Vistame en http://siliconproject.com.ar/neckkito/
Aadimos unos pocos registros (pocos para no tener un
XML muy largo). Por ejemplo, yo he aadido los siguientes
(los datos son inventados):

Ahora nos creamos un formulario en blanco. Ser el que nos servir para hacer pruebas. Por
ejemplo, yo lo he llamado FMenu (para variar, claro).

Vamos a crearnos un formulario basado en la tabla TDatos, pero en vista de formularios


continuos2. Lo llamaremos FDatos. Debera quedarnos una cosa as:

Finalmente, en la carpeta donde tenemos la BD, crearemos una nueva carpeta, a la que
llamaremos ArchivosXML. Ah guardaremos todos nuestros archivos xml.

EXPORTANDO A XML

PROCEDIMIENTO
Para exportar a XML vamos a utilizar el mtodo EXPORTXML, que tiene la estructura siguiente:

Application.ExportXML <TipoObjeto>, <OrigenDatos>, <DestinoDatos>, <DestinoEsquema>,


<DestinoPresentacion>, <DestinoImagenes>, <Codificacion>, <OtrosArgumentos>, <Condicion>,
<InformacinAdicional>

<TipoObjecto> si queremos exportar los datos de una tabla, de una consulta, de un

2 Para usuarios de Access 2007 y posterior tenemos un botn especfico para ello, que es Varios elementos. Los sufridos usuarios de
Access 2003 debern confeccionarse el formulario a medida, sacar sus propiedades Formato Vista predeterminada:
Formularios continuos.

4
Vistame en http://siliconproject.com.ar/neckkito/
formulario...

<OrigenDatos> nombre del objeto que vamos a exportar

Estos dos argumentos son de entrada obligatoria. Los que


siguen son opcionales.

<DestinoDatos> Ruta, nombre y extensin (*.xml) de los


datos exportados

<DestinoEsquema> Ruta, nombre y extensin del


esquema exportado.

<DestinoPresentacion> Ruta, nombre y extensin (*.xsl) de la presentacin de los datos

<DestinoImagenes> Ruta de las imgenes exportadas (si las hubiera)

<Codificacin> Codificacin del archivo XML

<OtrosArgumentos> Mscara de bits que especifica otros comportamientos asociados a la


exportacin a XML

<Condicion> Condicin si queremos filtrar un conjunto de registros

<InformacionAdicional> Especifica tablas adicionales que se van a exportar.

Tras esta intensa explicacin terica vamos a realizar un ejemplo, donde slo utilizaremos
algunos de los argumentos de los que hemos visto.

La idea es exportar la tabla TDatos a un fichero en la carpeta ArchivosXML que llamaremos


misDatos.

En nuestro FMenu crearemos un botn de comando (cmdExportXML) y le asignaremos, en el


evento Al hacer click, el siguiente cdigo:

Private Sub cmdExportXML_Click()


'Declaramos las variables
Dim archivoDestino As String
Dim nombreArchivo As String
'Definimos las variables
nombreArchivo = "misDatos"
archivoDestino = Application.CurrentProject.Path & "\ArchivosXML\" & nombreArchivo
'Exportamos la tabla
Application.ExportXML acExportTable, "TDatos", archivoDestino & ".xml", _
, archivoDestino & ".xsl", , acUTF8
MsgBox "Exportacin realizada correctamente", vbInformation, "OK"
End Sub

Como vemos, hemos indicado, en la exportacin:

Que se trataba de una tabla (acExportTable)


Que la tabla era TDatos
Que el archivo destino era misDatos, con la extensin xml
Que el archivo destino de la presentacin era misDatos, con la extensin xsl

5
Vistame en http://siliconproject.com.ar/neckkito/
Que la codificacin era UTF-8

ARCHIVOS DE RESULTADO
Si ejecutamos este procedimiento y nos vamos a la carpeta
ArchivosXML veremos que se nos han creado 3 archivos:

El archivo misDatos.xml (que contiene los datos)


El archivo misDatos.xsl (que contiene informacin de
la presentacin)
El archivo misDatos.htm (que contiene la mezcla de
los dos anteriores para poder ser vista en el navegador).

Si tenemos Firefox o Chrome e intentamos abrir el archivo misDatos.htm nos encontraremos


con una agradable sorpresa. Os invito a probarlo (si tenis estos navegadores instalados,
claro).

Y qu sorpresa es? Que la pgina del navegador sale en blanco. Y por qu? No ser que
Firefox o Chrome no son de Microsoft?

Intentemos abrir misDatos.htm, pero esta vez con Internet Explorer. Qu nos sale?

Pues nos aparece, nada ms y nada menos, que lo siguiente:

Curioso, verdad?

Moraleja: debemos abrir el archivo htm con IE.

Vamos a abrir el archivo misDatos.xml con el bloc de notas 3. Nos encontraremos con lo
siguiente:

3 Entiendo que todos sabemos cmo hacer eso, pero por si hay algn/a despistado/a debemos: hacer click con el botn derecho
sobre el archivo Abrir con... Seleccionamos el bloc de notas . Si no nos sale en la lista de programas le damos a la opcin
Elegir Programa... Seleccionamos el bloc de notas, y si an as no nos sale buscamos el archivo Notepad.exe

6
Vistame en http://siliconproject.com.ar/neckkito/
Como vemos, la primera y la segunda lneas se corresponden con valores por defecto que
siempre crea la exportacin, y que proporcionan informacin variada sobre el tipo y contenido
del archivo.

La primera etiqueta se corresponde con el nombre de nuestra tabla <TDatos>. Dentro de la


tabla TDatos tenemos los campos, que vienen recogidos registro a registro con la estructura
NombreCampo Valor Cierre NombreCampo.

De ah que veamos:
<Id>1</Id>
<Peli>Matrix</Peli>
etc.

Si queremos verlo ms legible podemos abrir el archivo misDatos.xml con IE o con el editor
XML de Microsoft. Obtendremos unas delimitaciones ms claras y con colorines". Algo as:

7
Vistame en http://siliconproject.com.ar/neckkito/
Y, finalmente, si abrimos el archivo misDatos.xsl con el bloc de notas o con el XML editor de
Microsoft podemos prepararnos para llevarnos un susto...

Evidentemente no entraremos en explicar los detalles de este archivo (no creo que yo fuera
capaz ;-) ) Simplemente, como podemos intuir al verlo, vemos que marca los estilos que
configurarn el documento.

MANIPULANDO EL ARCHIVO XML


Hemos comentado que el archivo *.htm combinaba datos y estilos. Sin embargo, podra
interesarnos que el fichero *.xml supiera dnde est su amigo *.xsl. Para hacer la prueba
vamos a hacer lo siguiente:

Copiamos el archivo misDatos.xml


Lo pegamos en la misma carpeta con el nombre misDatos2.xml
Editamos, con el bloc de notas, misDatos2.xml y aadimos la siguiente lnea de cdigo
debajo de la primera:

<?xml-stylesheet type="text/xsl" href="misDatos.xsl"?>

De manera que nos quede ubicado as:

En la ilustracin podris ver el primer fragmento del cdigo que ya conocamos con la lnea
insertada. Para vuestra informacin esto es lo que verais si utilizis Notepad++

Y para qu nos sirve lo anterior? Pues para no depender de un archivo htm. Lo veremos con
ms claridad en el prximo apartado.

EXPORTANDO UN FORMULARIO
En nuestro FMenu vamos a aadir un botn de comando, al que llamaremos
cmdExportFormXML, y le generaremos el siguiente cdigo:

8
Vistame en http://siliconproject.com.ar/neckkito/

Private Sub cmdExportFormXML_Click()
'Declaramos las variable
Dim archivoDestino As String
Dim nombreArchivo As String
'Definimos las variables
nombreArchivo = "misDatosForm"
archivoDestino = Application.CurrentProject.Path &
"\ArchivosXML\" & nombreArchivo
'Exportamos el formulario
Application.ExportXML acExportForm, "FDatos",
archivoDestino & ".xml", _
, archivoDestino & ".xsl", , acUTF8
MsgBox "Exportacin realizada correctamente",
vbInformation, "OK"
End Sub

Como veis es prcticamente idntico al anterior, slo que adaptado a un formulario (os he
marcado en negrita las diferencias).

Si ejecutamos ese cdigo veremos que en nuestra carpeta ArchivosXML nos han aparecido,
como mnimo, tres archivos ms (si hemos dejado el logo -Access 2007 y sup.- nos habr
aparecido otro archivo grfico).

Si abrimos con IE el archivo misDatosForm.htm veremos que nos aparece lo siguiente:

Lo cual ya es ms bonito, verdad?

Vamos a copiar nuestro archivo misDatosForm.xml y lo vamos a pegar con el nombre de


misDatosForm2.xml. Abrimos este ltimo con el bloc de notas y aadimos la lnea que
comentbamos antes, para indicarle que existe un archivo *.xsl.

Su cabecera nos debera quedar as:

Recapitulando:

9
Vistame en http://siliconproject.com.ar/neckkito/
misDatosForm.xml no sabe que hay un archivo de presentacin
misDatosForm2.xml s sabe que hay un archivo de presentacin

Si abrimos ambos archivos con el IE obtendremos lo


siguiente:

misDatosForm2.xml

misDatosForm.xml

Como vemos, si no hay estilo IE slo puede mostrar el cdigo, mientras que si hay estilo IE no
muestra los datos con el estilo correspondiente (y nos evita depender de un archivo htm).

TRASPASANDO LOS DATOS A UNA APLICACIN EXTERNA


Como comentbamos al inicio de este captulo, vamos a imaginarnos que tenemos una
aplicacin que puede leer datos desde archivos XML.

Para este ejemplo utilizaremos como aplicacin externa Microsoft Excel, bsicamente porque
doy por supuesto que todos disponemos de este programa.

As pues, nos situamos sobre el archivo misDatos.xml y lo abrimos con Excel. Al abrirse nos
pedir cmo deseamos abrir el archivo. Le indicamos la opcin Como tabla XML.

Al final deberamos tener un resultado parecido a este:

En principio la idea que apuntbamos al principio, que era poder pasar datos desde Access a
una aplicacin que no leyera directamente los datos en Access, ya est conseguida.

IMPORTANDO XML
Para realizar la importacin en Access utilizaremos el mtodo IMPORTXML, que tiene la
siguiente estructura:

Application.ImportXML <DatosOrigen>, <OpcionesImportacion>

El primer argumento es obligatorio; el segundo opcional.

10
Vistame en http://siliconproject.com.ar/neckkito/
<DatosOrigen> archivo xml donde estn los datos.

<OpcionesImportacin> Podemos elegir entre tres


opciones:
Anexar los datos a una tabla
Crear una tabla con estructura y datos
Crear una tabla con slo estructura

Vamos a copiar el archivo misDatos.xml y lo pegaremos con


el nombre de datosExternos.xml. Lo editamos con el bloc de
notas y lo dejamos as:

Haremos un ejercicio de imaginacin y supondremos que este archivo es el que hemos


obtenido de esa aplicacin externa al exportar sus datos a xml.

En nuestro FMenu vamos a crear el botn de comando cmdImportXML y le asignaremos el


siguiente cdigo:

Private Sub cmdImportXML_Click()


'Declaramos la variable
Dim archivoAImportar As String
'Indicamos la ruta del archivo
archivoAImportar = Application.CurrentProject.Path & "\ArchivosXML\datosExternos.xml"
'Importamos el archivo a la tabla TDatosExcel
Application.ImportXML archivoAImportar, acStructureAndData
MsgBox "Importacin realizada correctamente", vbInformation, "OK"
End Sub

Al ejecutarlo se nos crear la tabla AppExterna con la informacin del archivo xml.

Fcil, verdad?

Y ya tenemos la segunda parte del proceso, que era poder incluir datos de una aplicacin
externa a nuestro Access.

PARA FINALIZAR...
Bueno... creo que eso es todo sobre el tema de XML. Espero que este captulo sirva para

11
Vistame en http://siliconproject.com.ar/neckkito/
incrementar los conocimientos de los recursos de que disponemos para manejar datos entre
aplicaciones.

Un saludo, y...

suerte!

12
Vistame en http://siliconproject.com.ar/neckkito/

Das könnte Ihnen auch gefallen