Crear XSL desde vb

He creado un programa en visual basic que pide al usuario una consulta SQL y la ejecuta contra la base de datos seleccionada (access). La consulta la devuelve en XML.
He creado un dtd con dos partes <estructura> y <datos>. La parte de estructura informa sobre el tipo de dato de cada campo y su tamaño. La parte de <datos> está formada por tantos <registro> como tuplas haya producido la consulta. Cada <registro> incluye los valores de los campos con su nombre como atributo:
<registro>
<campo nombre="IDCliente">5</campo>
<campo nombre="Calle">hola</campo>
</registro>
Mi pregunta es como crear un XSL que permita transformar el archivo XML en un HTML más atractivo visualmente
Respuesta
1
El proceso se trata de combinar el archivo de datos que tienes, que es el xml y el otro archivo que te falta por crear (XSL), este archivo va a llevar toda la interfaz con el usuario que le quieras desplegar.
Ok, primero tienes que crear el archivo xsl, aquí te va un ejemplito de como hacer un archivo xsl, que básicamente va a tener código html para la interfaz de usuario. Copia este código y cambiale los datos para que se acoplen a los tuyos.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table cellpadding="0" cellspacing="0" style="position: absolute; top=0.5cm; width=20cm;height=4.5cm;">
<xsl:if test="/MENSAJE/DATOS_ENVIO/@FAX">
<xsl:attribute name="border">
1
</xsl:attribute>
</xsl:if>
<tr> <td>
<table width="99%" border="0" cellspacing="0" cellpadding="0" height="99%">
<tr>
<td height="138" rowspan="2" width="79%">
<font size="2"> <p> <xsl:value-of select="/MENSAJE/DATOS_CLIENTE/@NOMBRE" /> </p> <p style="margin-top: -20"> <xsl:value-of select="/registro/campo/nombre" /> </p> </font>
</td>
<xsl:if test="/registro/campo/@nombre">
<td height="33" width="21%" align="center">
<div align="center"> </div>
</td>
</xsl:if>
</tr>
</table>
</body>
</html>
Con esto tienes un ejemplo de un archivo xsl, que guardas con el nombre que quieras.
Después en visual basic, se unen los dos archivos de la siguiente manera. (Nota que tienes que poner los nombres que pusiste a los dos archivos en tu programa).
Dim Xml As DOMDocument
Dim Xsl As DOMDocument
Dim xmlResult As ADODB.Stream
Dim strPath As String
Set Xml = New DOMDocument
Xml.Load App.Path & "\prueba.xml"
Set Xsl = New DOMDocument
Xsl.Load App.Path & "\MENSAJE.xsl" 'path donde esta la plantilla xsl
Set xmlResult = New ADODB.Stream
XmlResult. Open
Xml. TransformNodeToObject Xsl, xmlResult ' tranforma los dos archivos
XmlResult. SaveToFile App.Path & "\mensaje.htm", adSaveCreateOverWrite 'path en donde se guarda
Ok, creo que con eso, y cambiándole algunas cosas, de acuerdo a tu programa te tiene que servir. Ademas acuérdate de ver la página html que se guarda en la ultima linea para que veas el resultado, eso si los archivos están construidos corerectamente.
Cualquier cosa o problema me vuelves a preguntar.
Ok!
Hola de nuevo, la solución creo que es buena, sin embargo en la línea:
Xml.transformNodeToObject Xsl, xmlResult
Salta un error diciendo: "la hoja de estilo no contiene un elemento de documento. Es posible que esté vacía o no sea un documento XML bien formado".
¿Cómo soluciono esto?
Gracias adelantadas
Aclaro alguna cosa:
La hoja HTML debiera presentar una tabla, por cada fila un registro de datos y por cada columna un campo.
Sin embargo, ¿cómo saber los campos que he recibido de la consulta?
Espero no complicarlo demasiado
Gracias de nuevo
Lo que pasa con ese error es que el archivo xsl tiene un error.
Para solucionarlo abre este archivo con el explorer y el te va a decir en cual lines esta el error.
También acuérdate que yo en el ejemplo use datos de ejemplo, tu tienes que armarla con tus datos, seguro por ahí este el error.
La arroba se usa para extraer los datos del XML e insertarlos en el xsl.
Este es un lenguaje que se llama Xpath y es el que se utiliza para sacar los datos. Si es importante que la pongs porque si no el no va a reconocer cual dato extraer.
Si necesitas saber algo más de Xpath me puedes avisar y te envío información.
Hola, pues te agradecería me enviases algo sobre Xpath o al menos algún link interesante. Ya de paso, si puedes incluir algo de Xquery pues también me lo mandas porque tengo un "pequeño" lio con las tecnologías relacionadas con XML y veo que sin conocerlas el XML no sirve para mucho.
Gracias por responder tan pronto
Hola! Un mes y pico después aún sigo dándole vueltas al tema este: me sigue dando el mismo error a pesar de que crea un xsl correcto y ya no da problemas en el explorer, pero parece que no asocia correctamente los archivos.
De todas formas, quisiera que me explicases sobre la @ situada antes de algunos nombres, ¿es imprescindible su uso? ¿Y cuándo?
Muchas gracias por todo lo anterior y ya pronto finalizo la pregunta
Hay cantidad de manuales sobre este tema, yo te envío algunos que creo que te pueden ayudar.
http://www.abcdatos.com/tutoriales/tutorial/l866.html
http://www.abcdatos.com/tutoriales/webmasters/xml.html

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas