Hoy os traigo algo muy útil , especialmente para los estudiantes que necesitan crear proyectos web y alojarlos en algún servidor de hosting gratuito porqué esta la vida muy cara.
Podéis acceder a Aquí mismo . Y crearos una cuenta FREE, que ofrece 1 dominio y 3 subdominios de hasta 250MB de forma gratuita.
Yo lo he utilizado en varias ocasiones para crear webs piloto e incluso para una a una amiga que ha estado utilizando durante años .
Una vez creada la cuenta podéis acceder y desde el panel de control de hosting, se administran los dominios y subdominios.
Aquí va todo a pelo, tenéis que crear vuestros archivos php para que sea legible en la www.
Voy a dároslo un poco mascaito va...
Váis a la pestaña Panel de Control --> Gestor de Dominios y desde aquí podéis crear, eliminar , modificar... Dominios y Subdominios.
Una vez creado el subdominio, vais a la pestaña panel de control --> Gestor de Archivos . Desde aquí podéis administrar los archivos de vuestra página web (inicio, imagenes, javascript,...).
Un archivo que tenéis que crear, si o sí para que la web se haga visible es el archivo Inicio.php , Es imprescindible, y ha de contener la siguiente estructura. Copiarlo tal cual (eliminando las almohadillas de inicio y fin): #<?php if (isset($_GET['inicio-cherry.html'])) { $page = $_GET['inicio-cherry.html']; if (file_exists("$inicio-cherry.html")) { include ( "$inicio-cherry.html"); } else { print "<h2>Page not found</h2>"; } } else { include ("inicio-cherry.html"); }
?> #
Lo único que hay que modificar es el nombre del archivo que este contendrá como inicio, en mi caso lo cree como inicio-cherry.html vosotros le podéis poner a vuestra página de inicio el nombre que queráis y en el archivo Inicio.php le ponéis ese mismo nombre.
Y a partir de aquí podéis ir subiendo y creando los miles de archivos, páginas, imágenes... que vayáis a incluir en vuestra web .
Aquí dejo el ejemplo del resultado de una web que me curre mucho y ha quedado como web piloto:
Para añadir un botón de compra con cuenta Paypal es muy fácil solo hemos de ir a : Crear Botón de Añadir al Carro
Y rellenar los campos que se nos indican, de forma correcta.
Al finalizar los pasos que nos pide, se crea un código html que solo hemos de copiar y pegar en nuestro código de web en un tr,td o donde
deseemos aplicarlo.
De forma que finalmente podemos verlo como en la imagen de arriba.
Recuerda: cada pieza de venta tendrá un nombre y precio diferente, así que hay que crear un código para cada venta que se vaya a hacer.
Ejemplo de código:
Esta foto de arriba es el ejemplo de ocmo se vería aplicando el código siguiente dentro del body, en este caso lo aplique en una subcapa que iba dentro de otra capa para que quede ahí puesto y con su respectivo css .
Ahí tenéis el código seleccionado, podéis cambiar el tipo de letra, color,y todas esas opciones que viene a ser parte del estilo.
Pero tener en cuenta que en: el primer enlace ponemos la dirección web url de nuestra página de facebook.
y en la img src ponemos lo mismo que marca el código pero cambiando 438637816276446.800.2053791908.png por el nombre de
la imágen que deseamos poner que también se encuentra en nuestra página como por ejemplo, nuestra foto de perfil.
Y debajo opcionalmente, puedes añadir el mismo código para que otros usuarios puedan ver como promocionar también su página, igual que tu lo has hecho.
Para hacerlo más fácil también puedes ir a tu página habitual de Facebook y en la foto de portada verás que debajo pone: Ver registro de actividad ...
Le das a esos tres puntos y clic en crear una insignia para tu sitio
Desde aquí puedes crear varias y diferentes tipos de insignias.
(sin corchetes en ningún sitio)
Este código lo que hace es reproducir de forma automática la canción que se encuentra en la carpeta musica/crazylitllething.mp3
No se mostrará el menú de play , pause ,etc porque usamos el wmode en "transparent", si lo quisieramos ver ese menú, solo hemos de quitar esa parte de código. Y se reproducirá tan solo una vez y de forma automatica porque tenemos el autostart="true".
Os asegura que funciona siempre que pongáis la ruta de donde se encuentra el archivo correctamente.
y además es la forma más fácil de insertar
Si por el contrario quieres que se vea, para controlar el play y pause y todo el menú del sonido..... usa este otro código que lo hace visible:(sin ninguna almohadilla)
#<#embed class="musica" src="musica/crazylittlething.mp3" hidden="false" autostart="true" />#
La class, lo unico que hace es controlar posición en la capa mediante código css, pero no hace falta usar una class para que veas k funciona. solo usa :
#<#embed src="musica/crazylittlething.mp3" hidden="false" autostart="true" />#
Donde src="url del archivo de musica.mp3" el hidden="false" para que se muestre y autostart="true" para que empiece automaticamente o "false" si no deseas eso.
A continuación os detallo un ejemplo de como incorporar etiquetas y atributos en un XML/XSL:
Acordaros de quitar todas las # para que os funcione el código.
para una información más detallada e inicios en el lenguaje de programación web, visita:
XML1
XML:
<#?xml version="1.0" encoding="UTF-8"?>
<#?xml-stylesheet type="text/xsl" href="activitat2.xsl"?>
<#videoclub>
<#pelicula id="p1">
<#imagen >../img/los ojos del gato.jpg<#/imagen>
<#titulo dir="http://gentetraslasparedes.blogspot.com.es/2012/06/los-ojos-del-gato-1985.html"> Los ojos del Gato <#/titulo>
<#codigo>08556935674<#/codigo>
<#genero>terror<#/genero>
<#edad>+18<#/edad>
<#director> Stephen King<#/director>
<#/pelicula>
<#pelicula id="p2">
<#imagen>../img/django.jpg<#/imagen>
<#titulo dir="http://www.blogdecine.com/historias-de-cine/django-desencadenado-la-pelicula"> Django <#/titulo>
<#codigo>085545332118<#/codigo>
<#genero>accion<#/genero>
<#edad>+18<#/edad>
<#director> Quentin Tarantino <#/director>
<#/pelicula>
<#pelicula id="p3">
<#imagen>../img/the-conjuring.jpg<#/imagen>
<#titulo dir="http://www.eleconomista.es/boxoffice/reports_usa/2013/the-conjuring-logra-asustar-con-mucha-fuerza-en-la-taquilla/"> The Conjuring<#/titulo>
<#codigo>0855453098779<#/codigo>
<#genero>terror<#/genero>
<#edad>+18<#/edad>
<#director> James Wan <#/director>
<#/pelicula >
<#/videoclub>
Es un lenguaje de programación, que se usa especialmente en aplicaciones intervenidas por el acceso a internet, es decir, aplicaciones que necesitan el uso de internet a no ser, que se ejecute en una aplicación local.
Por ejemplo, en aplicaciones XHTML como ampliación de un código.
Un ejemplo de javascript sería:
Function Capa (x){
Document.getElementByID("d9")style.display="none";
Document.getElementById("d8")style.display="none";
Document.getElementById(x)style.display="block";
}
De este modo lo que hacemos es que al iniciar el documento que lo contiene. Las capas d9 y d8 estarán ocultas ( previamente ocultar una de estas dos también en el css con el display="none"; para que surja bien el efecto).
Y en el documento XHTML o XML solo hemos de añadir el link de css y el de javascript.
lo podemos incluir en el mismo style del documento en otro aparte.
En el caso del javascript hemos de guardarlo como (nombre documento).js por ejemplo: javascript1.js.
en el xhtml o xml llamamos a la funcion en cualquier capa. por ejemplo en una d2 poniendo
dentro de un link en la capa d2 por ejemplo <#div id="d2"<#a href="<#javascript:capa ('d8')>Click aqui<#/javascript><#/a><#/div> (sin almohadillas).
Igual que en Lenguaje SQL, el XPATH i XQUERY es un lenguaje para realizar , consultas basadas en contenido web.
Para ello hemos de tener creado un XML con su XSL, y ayudándonos del programa QUIZX , podremos realizar consultas sobre estos documentos.
DESCRIPTORES DE CAMINOS:
Sirven para seleccionar elementos que se encuentran en cierto
camino en el ´arbol.
Los descriptores se forman simplemente nombrando tags
separados por /.
Si el descriptor comienza con / se supone que es un camino desde
la ra´ız.
Si el descriptor comienza con // se supone que el camino descrito
puede comenzar en cualquier parte en el ´arbol.
Impl´ıcitamente se supone que todos los descriptores se refieren a
caminos que avanzan en la profundidad del ´arbol.
El desciptor //nombre selecciona la lista
de todos los tag nombre en cualquier
lugar del documento.
En este caso se obtienen los nombres de
los departamentos y de los empleados.
ATRIBUTOS:
Para referirse a los atributos de los elementos se usa @ antes del
nombre, por ejemplo @telefono.
En un descriptor de camino los atributos se nombran como si
fueran tag hijos pero anteponiendo @.
en el ejemplo DEPARTAMENTO TELEFONO="8741460" este último después del =, es su atributo.
CONDICIONES DE SELCCIÓN:
En un descriptor una condici´on entre par´entesis cuadrados [...]
puede seguir al nombre de un tag o atributo (sin usar /).
En este caso se seleccionan los elementos que siguen el camino del
descriptor pero que adem´as cumplen la condici´on especificada.
En las condiciones se pueden usar comparadores (<, >, <=, >=, =,
!=) y conectivos l´ogicos (or, and)
Si en una usamos:
/Empresa/departamento/empleado[@salario > 500000]
selecciona los elementos empleados tales
que su atributo salario es mayor a 500000.
PREDICADOS:
La expresión
\Empresa\departamento[1]\empleado\rut
entrega el rut de los empleados del primer
elemento departamento en el documento.
Por ejemplo la expresión
\Empresa\departamento\empleado[last()]\rut
entregaría el rut del ´ultimo elemento empleado de cada departamento en el árbol, y
\Empresa\departamento\empleado[last()-1]\rut
el rut del penúltimo elemento empleado en
el árbol.
Por ejemplo la expresión
\Empresa\departamento[count(empleado)>1]\codigo
entrega el elemento código de todos los
departamentos que tienen más de un
(elemento) empleado.
AXES:
El descriptor /Empresa/departamento es realmente una forma
abreviada del descriptor /Empresa/child::departamento.
En este ´ultimo se ha hecho explícito el deseo de seguir por los
hijos de Empresa
El @ es simplemente una abreviación de la dirección attribute::
El descriptor
/Empresa/departamento[@telefono = "2354928"] es
entonces una forma abreviada de
/Empresa/child::departamento[attribute::telefono = "2354928"].
La expresión
\\nombre[nombre = ’González’]\parent::empleado\rut
entrega el rut del empleado de nombre González.
La búsqueda se realiza primero encontrando
un nodo nombre con contenido González, se
sigue avanzando hacia el padre que debiera
ser un elemento empleado, y luego al subelemento (hijo) rut.
En general el estandard XPath cuenta con una extensa
funcionalidad.
Por ejemplo funciones para manejo de strings, conversi´on
num´erica, fecha y horas, funciones de agregaci´on t´ıpicas , etc. etc.
Una referencia completa se puede encontrar en este enlace:
XPATH
EJEMPLOS DE XQUERY:
Por ejemplo el siguiente es un camino en XPath (note el archivo
expl´ıcito):
doc("empresa.xml")\Empresa\departamento\empleado[@salario>500000]\nombre
es v´alido tambi´en en XQuery.
Pero usando for-where-return se puede obtener un resultado
equivalente:
for $x in doc("empresa.xml")\Empresa\departamento\empleado
where $x\@salario > 500000
return $x\nombre
En la consulta
for $x in doc("empresa.xml")\Empresa\departamento\empleado
where $x\@salario > 500000
return $x\nombre
• for se usa para seleccionar nodos y almacenarlos en una
variable $x
• where se usa para discriminar algunos de los nodos
seleccionados
• return se usa para especificar que se quiere retornar
Todas las variables en XQuery comienzan con $
En general la sintaxis de una expresi´on simple en XQuery es:
for in
where
return
El where puede ser omitido si se quieren seleccionar todos los
nodos sin restricci´on.
El return puede ser condicional (usando if)y as´ı tener m´as
versatilidad en la salida
Adem´as el return puede especificar m´as que simplemente
expresiones XPath, puede mezclar tags XML que tambi´en se
quieran a la salida
MÁS EJEMPLOS:
En la siguiente expresi´on
for $emp in doc("empresa.xml")\\empleado
return if ($emp\@salario > 1000000)
then {data($emp\nombre)}
else {data($emp\nombre)}
el resultado debiera ser algo como
...
SotoPerez
Una expresi´on XQuery puede tambi´en llevar un preambulo lo que
nos permite por ejemplo generar p´aginas html:
{
for $emp in doc("empresa.xml")\\empleado
return if ($emp\@salario > 1000000)
then
{data($emp\nombre)}
else
{data($emp\nombre)}
}
Hay mucho que decir acerca de XQuery (tanto o m´as que acerca
de XPath).
Aun no es un estandard en la Web, pero ya est´a siendo muy usado.
Una referencia completa se puede encontrar en el enlace:
XQUERY
a partir del siguiente XML;Crea una consulta XQuery que dé, de resultado una tabla HTML que nos muestre el nombre del curso,
el profesor que lo imparte y el número de places disponibles.
Consulta:
for $nomb in doc("academia.xml")//academia/curs
let $nombre:=$nomb/nom
let $prof:=$nomb/professor
let $plces:=$nomb/places
return concat(
{data($nombre)}
,"-",
{data($prof)}
,"-",
{data($plces)}
)
crea una nueva consulta pero estableciendo la condición de ser cursos
con una cuota trimestral. Ha de aparecer ordenado según el número de plazas.
Consulta:
for $nomb in doc("academia.xml")//academia/curs
let $nombre:=$nomb/nom
let $prof:=$nomb/professor
let $plces:=$nomb/places
where $nomb/preu/@periodicitat = "trimestral"
order by $plces
return concat(
{data($nombre)}
,"-",
{data($prof)}
,"-",
{data($plces)}
)
Crea una consulta XQuery que dé, de resultado una tabla HTML que nos muestre los cursos que
se realizan a la sala número 2 y que el precio sea menor de 35 euros.
Consulta:
for $nomb in doc("academia.xml")//academia/curs
let $nombre:=$nomb/nom
where $nomb/aula = 2 and $nomb/preu < 35
return {data($nombre)}
DTD (Document Type Difinition) Define que elementos son acceptados y en que posiciones
han de estar dentro de un document XML.
Este DTD estará en referencia dentro de un documento XML y deberá definir :
- Léxico
- Reglas sintácticas
Veamos un ejemplo (sin almohadilla inicial en Element, para ejecutar código dentro del XML)(ni almohadilla en Doctype):
Si deseamos indicar que està vacío, hemos de usar la categoría EMPTY (sin almohadillas):
<#!ELEMENT home EMPTY> // Exemple:
Si deseamos indicar que puede tener cualquier conjunto de carácteres, pero ningun otro elemento (sin almohadilla en Element)
usaremos #PCDATA:
<#!ELEMENT nombre (#PCDATA)>
También podemos declarar un elemento que continga otro elemento . Per ejemplo:
un elemento que puede tener un elemento o un elemenot :
<#!ATTLIST persona (hombre|mujer)'hombre'>
Podemos declarar, un elemento que ha de tener almenos un
elemento :
<#!ELEMENT colegio (alumno+)>
Si utilizo *, estoy declarando que puede estar vacío o contener más elementos. Puedo decir que puede estar vacío o contener elementos
:
<#!ELEMENT colegio (alumno*)>
ATTLIST:
Por ejemplo, si tenemos el siguiente elemento: podríamos tener la
siguiente definición en el DTD (sin almohadilla):
En lenguaje XML/XSL, igual que en cualquier otro lenguaje, podemos crear varias cosas, desde un texto plano, a cualquier otro tipo, siempre que ejecutemos bien los ocmandos necesarios.
En este caso vamos a crear la estructura para un curriculum web, Empezamos con la demostración del XML ( para obtener código haga clic botón derecho sobre el contenido y seleccione inspeccionar elemento):
#img/pibe.jpgDesirèeMartinezInarejos35 años30Septiembre1978Barcelona42312298DPalacios13408083Barcelonaimg/telefono.png93388.98.33img/mobile.png+34670892212desy_mar_ina@hotmail.comimg/logo.pngimg/separador.png
Administradora de Sistemas / Administración WEB2 Años de experienciaExperta en Windows y sistemas UNIX, (administración, desarrollo
y humanización de Productos).
Diseño 3D, Desarrollo e implementacón de planos digitalizaciones,
diseñoo industrial.
AbrilJulio2012
Imaginación Constructiva. CRADE
Diseño Industrial - Gráfico
Prácticas ProfesionalesCreación y desarrollo de ProductosLicenciatura en Diseño Industrial20052010Facultad de Arquitectura y diseño de la Universidad de Girona.Certificado en Carrera General19982003Bachillerato en IES Pompeu Fabra, Badalona.Certificado de Técnico 19951998Secundaria "IES La Pineda" , Badalona.Inglés50%Catalán90%InformáticaModelado y Diseño en 3-D en software de Diseño. Manejo de Rhinoceros,Crazy Talk, Autocad, Hypershot, 3Ds Studio, poser,Particle illusion y paquete elemental de diseño gráfico, corel Draw, Photodraw de Microsoft y Photoshop CS4.
#
Por otro lado ahora vamos con el XSL para adjuntar el XML a este y que funcione correctamente.(Para ver el código utilizado presione el botón del derecho del ratón y seleccione inspeccionar elemento)
XML es un lenguaje, Similar al HTML pero con sus propias etiquetas, veamos un sencillo ejemplo ( quitar almohadillas para ejecutar código):
Libro Seguridad Informática 20 han de incluir cd de soporte paper Navigator A35 sin agujeros
<#comanda>
<#producto codi=”3303F”>
<#nom> Libro Seguridad Informática <#/nom>
<#cantitat>20<#/cantitat>
<#comentarios> han de incluir cd de soporte<#/comentarios>
<#/producto>
<#producto codi=”2103S”>
<#nom> paper Navigator A3<#/nom>
<#cantitat>5<#/cantitat>
<#comentarios> sin agujeros <#/comentarios>
<#/producto>
<#/comanda>
-Documentos bien formados: documentos sintàcticament correctos, es decir, siguen las
regla expuestas (tabulación, coherencia,...).
− Documentos válidos: documentos bien formados y que cumplen los requisitos de una estructura definida (DTD) .
La estructura de los archivos con XML:
− Les datos a almacenar(XML)
− La estructura o semántica (DTD)(dentro del XML)
− Presentación (XSL)( otro archivo independiente, pero que ha de ir unido al XML del mismo)
Para vincular el XSL con el XML y que funcione bien, hay que añadir la siguiente línea al archivo XML :
<#?xml-stylesheet type="text/xsl" href="tabla1.xsl"?> donde tabla1.xsl es el nombre del archivo a vincular.
Para recorrer un conjunto de elementos (por exemple, recorrer todos los alumnos de la escuela),
hemos de usar la estructura xsl:for-each (sin almohadillas):
Para extraer el valor de un elemento tenemos la siguiente instrucción:
donde “nombre” será el nombre del elemento ,del cual queremos extraer el valor.
Si deseamos mostrar resultados ordenados y no como están guardados en el fichero xml, tenemos la
siguiente instrucción se puede variar según el orden que deseamos obtener en la búsqueda:
Hay operadores lógicos
Igualtat '=
Desigualtat !=
Menor que (<) <
Major que (>) >
Menor o igual que(<=) <=
Mayor o igual que (>=) >=
Para indicar condiciones tenemos la siguiente instrucción( sin almohadillas):
<#xsl:if test="expressió">
...
<#/xsl:if>
En caso de ser muchas variantes de condiciones mejor usamos CHOOSE
Los datos recogidos han de ser procesados por algun programa. Este programa
puede estar:
En el mismo documento
En otro documento situado en un servidor, que se envía al usuario junto con los datos.
En los dos primeros casos se usa el JavaScript , al cual nos referirem más tarde.
En
el servidor se usan varios programas: CGI, ASP i, especialmente, el PHP.
Si usamos código javascript hemos de añadir la siguiente línea en el HEAD:
Por lo que hace el código HTML usado en los formularios, se limita a dos cometidos:
• Recoger y presentar los datos.
• Tramsmitir los datos al servidor y, si es el caso, sustituir el documento por el de destino.
FORMULARIOS Y ATRIBUTOS:
Un formulario queda delimitado por las etiquetas( sin almohadillas)
<#form>
...
<#/form>
La etiqueta <#form> ha de ir acompañada siempre del atributo action y, si los datos se han
de dirigir al exterior ,además añadir el atributo method
Method: tiene dos formas de trabajar(POST y GET), pero es recomendable usar preferiblemente GET.
POST: No incorpora datos anexados a la URL.
GET: si incorpora los datos anexados a la URL.
LOS CONTROLES:
Hay cuatro tipo de controles:
Cuadros de Texto.
Campos de Validación.
Menús Desplegables
Botones
El conjunto de controles se ha de añadir dentro de parágrafos o tablas. Cada tipo de control tiene sus etiquetas y atributos.
BOTONES:/b>
Botones submit , sirven para la transmisión de datos del documento
indicado por action. Este ha de tener los mecanismos adecuados para el proceso de datos. En caso de ninguna indicación en contra , el documento de destino se cargará en nuestro ordenador.
Botones reset , que tienen por objetivo borrar los datos entrantes en el formulario y
comenzar a rellenarlo de nuevo.
Botones button, que sirven para transmitir algún proceso con los datos. Han de llevar asociado algún programa que indique, lo que hace falta hacer con los datos. El hecho de presionar el botón, por si solo, no nos hace cambiar de documento.
La sintaxis, para los tres, es:(sin almohadillas)
<#input type="tipo" ... value="Leyenda" />
o bien:
<#button type="tipus" ... >Leyenda
Donde Leyenda es una frase como: borra, Renueva, Envía, De acuerdo, Ahora o similares, y
tipo adopta uno de los dos valores (reset | submit) en el caso de input
ETIQUETAS:
Con las etiquetas <#label>...<#/label> se pueden incluir rótulos anexados a controles de los formularios, de manera similar a la siguiente:( sin almohadillas)
Rètol<#/label><#input type=...
CUADROS DE TEXTO:
Los cuadros de texto de una línea recogen o presentan textos o nombres relativamente cortos. El formato correcto es el siguiente: (sin almohadillas)
<#input type="text" size="100" value="valor" id=”nombre” />
Hay tres tipos más de cuadros de texto. Los dos primeros son variantes del anterior. El tercero es
diferente.
a) De contraseña:
Al teclear el texto dentro de la casilla, solo aparecerán asteriscos ******.
Pero contendrá los auténticos caracteres, aunque cifrados. veamos un ejemplo ( sin almohadillas, para ejecutar código)
<#input type="password" id="nom" />
</ hr>
b) Escondidos
A veces se transmite algún dato sin que el usario lo sepa. Por ejemplo, cuando se transmite un formulario , su contenido de fecha y hora.
Los campos de texto escondidos se limitan a recoger estos datos. Como no interviene el usuario, los valores han de estar constantemente ya previstos por el autor del documento o sino es imprescindible que algún programa recoja los datos y los inscriba. veamos un ejemplo (sin almohadillas para ejecutar código):
<#input type="hidden" id="nom" />
c) De diversas líneas
<#textarea id="nom" rows="n" cols="n">valor
El texto valor es el valor inicial del cuadro de texto. Las propiedades rows y cols hacen
referencia a la altura y anchura del cuadro (filas x columnas) . Si hace falta, se puede añadir un atributo :
readonly="readonly" (readonly) ( solo lectura).
Notamos que mientras el valor inicial en los cuadros de texto de una sola línea es un atributo
de la propiedad value, en los de más de una , es un texto comprendido entre las etiquetas
inicial y final.
CAMPO DE VALIDACIÓN:
Selección de una opción entre varias:(ejemplo, sin almohadillas para ejecutar código)
<#input type="radio" name="nom" value="valor_1" />
<#input type="radio" name="nom" value="valor_2" />
...
(, sin barra final)
Es imprescindible que el nombre sea el mismo para todas las opciones. El atributo
checked="checked" (checked ) establece, si se desea , una selección inicial por defecto:
<#input type="radio" name="nom" value="valor" checked="checked" />
(, sin barra final)
El formulario trasmite al lugar de destino la pareja: nom=valor seleccionada.
Para formular una o mas preguntes que se hayan de responder con: sí/no se especifican así (sin almohadillas) :
<#input type="checkbox" name="nom" />
(, sense barra final)
En este caso, si hay más d'una pregunta, el valor de name ha de ser diferente en cada caso.
El rótulo se indica como en el caso anterior. Pero en cada selección afirmativa, el formulario trasmite al
lugar de destino la pareja nom=on.
Menús Desplegables:
Los menús desplegables se especifican con la sigiente estructura ( sin almohadillas, para ejecutar código) :
El atributo SIZE , es el numero de líneas que se verán simultáneamente en el menú desplegable, normalmente se elige 1 o 2. si es corto, 10 o más si es largo.
Si hay varias opciones diferentes es posible agruparlas en grupos:
<#optgroup label="nombre_del_grupo">