https://github.com/perez987/html-from-xml-with-xsl
Convert an XML document to an HTML document with formatting and layout defined in an XSL style sheet with Visual Studio 2019 (VB)
https://github.com/perez987/html-from-xml-with-xsl
html visualbasic xml xsl xslcompiledtransform xslt
Last synced: 3 months ago
JSON representation
Convert an XML document to an HTML document with formatting and layout defined in an XSL style sheet with Visual Studio 2019 (VB)
- Host: GitHub
- URL: https://github.com/perez987/html-from-xml-with-xsl
- Owner: perez987
- License: mit
- Created: 2021-12-22T19:54:41.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-16T23:24:27.000Z (over 3 years ago)
- Last Synced: 2025-10-09T20:06:11.402Z (8 months ago)
- Topics: html, visualbasic, xml, xsl, xslcompiledtransform, xslt
- Language: Visual Basic .NET
- Homepage:
- Size: 9.66 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-ES.md
- License: LICENSE
Awesome Lists containing this project
README
# Transformación XML + XSL >> HTML, en Visual Studio 2017
Convertir un documento XML en un documento HTML con formato y diseño definidos en una hoja de estilos XSL, utilizando Visual Studio 2017 y lenguaje Visual Basic .NET
### [Versión en inglés](README.md)
### Introducción
Los documentos XML son de texto plano y su presentación básica carece de opciones de diseño o formato. Al abrirlo siempre vemos texto estructurado de acuerdo con las normas del lenguaje XML. En ocasiones se necesita utilizar datos XML como origen pero presentarlos de una manera determinada, por ejemplo para un dispositivo móvil o para la web. En estos casos podemos recurrir a las hojas de estilo XSL.
XSL (_extensible stylesheet language_) contiene las reglas que permiten extraer y formatear la información desde un archivo XML para ser presentada al usuario. Dentro del lenguaje XSL existe XSLT (_XSL transformation_) que se usa para transformar documentos XML. Mediante XSLT se define cómo va a ser convertido un documento XML en otro tipo de documento que puede ser de varios tipos (PDF, HTML, JAVA, etc.) aunque lo más habitual es que sea HTML para poder ser visualizado en un navegador Web.
Para conseguirlo hay que relacionar el documento XML con una hoja de estilos XSL en la que se detallan las reglas para transformar un tipo de documento en otro, estas reglas son analizadas por el procesador XSL y la salida resultante es un documento HTML formateado con arreglo a esas reglas.
En este ejercicio se ha creado una hoja de estilos XSL en la que se ha definido cómo presentar el origen de datos XML en una página Web apta para ser imprimida por el usuario.
### Clase XslCompiledTransform del espacio de nombres System.Xml.Xsl
En esta clase disponemos de 2 métodos sobrecargados, XslCompiledTransform.Load y XslCompiledTransform.Transform, que funcionan de esta manera:
* `Load` carga y compila la hoja de estilos que va a ser utilizada usando el documento XSL como parámetro único
* `Transform` ejecuta la transformación usando el documento XML (parámetro 1) y creando el documento HTML (parámetro 2).
```vbnet
Dim xslt As System.Xml.Xsl.XslCompiledTransform = New XslCompiledTransform
xslt.Load(Rutaxslt) 'carga y compila la hoja de estilos XSL'
xslt.Transform(Rutaxmlt, Rutahtml)
'ejecuta la transformación usando el documento XML del parámetro 1 creando el documento HTML del parámetro 2
```
En este ejercicio se van a utilizar 2 documentos: _12empresas.xml_ y _12empresas.xsl_ para obtener por código un tercer documento _12empresas.html_.
### 12empresas.xml
```xml
1
Case Corp.
923659854
169852985
2
Data General Corp.
902365458
223697120
3
Eastman Kodak Co.
933696369
258623589
4
Eaton Corp.
965235898
001544444
5
Gateway Inc.
900326596
001544444
6
Paine Webber Group Inc.
932145785
214585258
7
Parker Hannifin Corp.
944444102
224465668
8
Reynolds Metals Co.
923659854
221995416
9
Tenet Healthcare Corp.
944444102
258623589
10
UniGroup Inc.
932665447
155584598
11
Union Pacific Resources Group Inc.
965235898
002587455
12
Xerox Corp.
932569857
224465668
```
### 12empresas.xsl
```xml
Archivo XML - > documento HTML
ARCHIVO XML - > DOCUMENTO HTML
Id
Nombre de la empresa
Teléfono
Teléfono
```
### 12empresas.html
Se obtiene el archivo _12empresas.html_ que contiene los mismos datos que el archivo XML pero formateados según el archivo XSL.

### Variables con las rutas a los archivos
Se crean unas variables de cadena que obtienen las rutas a los archivos utilizando Server.MapPath que devuelve la ruta física que se corresponde con la ruta virtual especificada.
```vbnet
Private Rutaxmlt As String = Server.MapPath("/") + "12empresas.xml"
Private Rutaxslt As String = Server.MapPath("/") + "12empresas.xsl"
Private Rutahtml As String = Server.MapPath("/") + "12empresas.html"
```
Estas rutas se podrían obtener de varias maneras diferentes, aquí sólo comento otra que es algo más compleja usando _Combine_ de -FileInfo_ que combina la ruta definida en _Server.MapPath_ con el nombre del archivo.
```vbnet
Private Rutaxmlt As String = New System.IO.FileInfo(System.IO.Path.Combine(Server.MapPath("/"), "12empresas.xml")).FullName
Private Rutaxslt As String = New System.IO.FileInfo(System.IO.Path.Combine(Server.MapPath("/"), "12empresas.xsl")).FullName
Private Rutahtml As String = New System.IO.FileInfo(System.IO.Path.Combine(Server.MapPath("/"), "12empresas.html")).FullName
```
Con ellas se programa el método que transforma el archivo XML en HTML, lo tienes en el primer bloque de código del articulo.
### Hoja de estilos XSL
Observa que en este archivo se mezclan lenguaje XML y HTML. Por ejemplo, se usan etiquetas y atributos HTML para diseñar la presentación de la página web.
```html
Id
Nombre de la empresa
Teléfono
Teléfono
```
Junto con lenguaje XML que maneja los datos. Aquí se usan bucles _for-each_ para iterar por los elementos del archivo XML y el comando _sort_ para ordenar los datos. La construcción __ conecta con los valores del elemento del mismo nombre del archivo XML.
Junto con lenguaje XML que maneja los datos. Aquí se usan bucles _for-each_ para iterar por los elementos del archivo XML y el comando _sort_ para ordenar los datos. La construcción __ conecta con los valores del elemento del mismo nombre del archivo XML.
```xml
```
### Abrir archivos con _System.Diagnostics.Process.Start_
Como ejercicio complementario se han creado unos botones en la página _aspx_ para abrir cada uno de los 3 archivos que se usan, el XML origen de los datos, el XSL con las normas de diseño y el VB con el código Visual Basic .NET. Para abrir los archivos se usa _System.Diagnostics.Process.Start_ que inicia un proceso nuevo con el nombre de un archivo o una aplicación:
* si lleva 2 parámetros, el primero es el nombre del programa y el segundo el nombre del archivo que se desea abrir
* si lleva sólo un parámetro, es el nombre del archivo y en este caso lo abre con el programa que Windows tenga asociado.
```vbnet
System.Diagnostics.Process.Start(Rutavb) 'abre el archivo con el programa asociado de Windows
System.Diagnostics.Process.Start("Notepad.exe", Rutavb) 'abre el archivo en Bloc de Notas
System.Diagnostics.Process.Start("IExplore.exe", Rutavb) 'abre el archivo en Internet Explorer
```