El lenguaje XSLT sirve para aplicar transformaciones a estructuras de datos XML, este es un ejemplo de cómo se puede utilizar XSLT para traducir una estructura de datos en XML a sentencias en javascript y SQL. Nota que el código XSLT incluye etiquetas HTML para despliegue de información.
Entra a esta página, copia los códigos en la parte correspondiente, prueba editar el código XML cambiando los nombres y tipos de las variables o aumenta variables, analiza el resultado en la vista del navegador. ¿Entiendes las etiquetas XSL?
Código XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<datos>
<variable>
<nombre>aprobado</nombre>
<tipo>logico</tipo>
</variable>
<variable>
<nombre>final</nombre>
<tipo>numerico</tipo>
</variable>
<variable>
<nombre>nombre</nombre>
<tipo>texto</tipo>
</variable>
<variable>
<nombre>apellido</nombre>
<tipo>testo</tipo>
</variable>
</datos>
Código XSLT
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Declaración de Variables</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Nombre</th>
<th>Tipo</th>
<th>javascript</th>
<th>SQL</th>
</tr>
<xsl:for-each select="datos/variable">
<tr>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="tipo"/></td>
<xsl:choose>
<xsl:when test="tipo = 'logico'">
<td> Var <xsl:value-of select="nombre"/> as boolean; </td>
</xsl:when>
<xsl:when test="tipo = 'numerico'">
<td> Var <xsl:value-of select="nombre"/> as int; </td>
</xsl:when>
<xsl:when test="tipo = 'texto'">
<td> Var <xsl:value-of select="nombre"/> as str; </td>
</xsl:when>
<xsl:otherwise>
<td> El tipo de datos <xsl:value-of select="tipo"/> es invalido </td>
</xsl:otherwise>
</xsl:choose>
<td> INSERT INTO terminales (<xsl:value-of select="nombre"/>,
<xsl:value-of select="tipo"/>); </td> </tr>
</xsl:for-each>
</table> </body> </html>
</xsl:template>
</xsl:stylesheet>
En el navegador se despliega lo siguiente:
¿Qué modificaciones deben hacerse al código para que cuando el tipo de datos sea inválido también despliegue un mensaje de error en la columna SQL?
En el ejemplo anterior se generan varias oraciones de una misma estructura sintáctica, sin embargo, un lenguaje está compuesto de muchas estructuras sintácticas ¿Qué modificaciones deben hacerse al código para generar el siguiente resultado?