Convertir XML a XHTML con javascript

Una funcionalidad común requerida en sitios web es pasar la información recibida de un API, web service, o nuestra propia aplicación de formato XML a XHTML, es decir, transformar los datos a la interfaz gráfica para mostrarlos al usuario.

Para tal efecto es posible utilizar XSLT que es un Transformador XSL para convertir documentos XML a otros formatos. XSLT es un estándar de la W3C donde se puede ver la especificación completa.

Lo necesario

Procedimiento

El trabajo está en su mayor parte en preparar el template que indicará como se va a formar el XHTML deseado.
Vamos a crear un archivo nuevo en un editor de texto, se llamará template.xsl y contendrá lo siguiente:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:template match="/">
<div id="timeline">
<xsl:for-each select="statuses/status">
    <div class="status">
      <h3><xsl:value-of select="user/name"/></h3>
      <p><xsl:value-of select="text"/></p>
    </div>
    </xsl:for-each>
</div>
</xsl:template>
 
</xsl:stylesheet>

 
El encabezado es el estándar recomendado por W3C.
El atributo match de la etiqueta xsl:template indica que se recorrerá el XML a partir de la raíz.

Al aplicar el template se generará un div de id ‘timeline’ que contendrá un subdiv por cada tweet del XML que en este caso son 20 por tratarse de la llamada simple al API.

El javascript necesario para aplicar el template es el siguiente

<script type="text/javascript">
var xsl;
var xml;
$(document).ready(function(){
    $.get("template.xsl", function(xslFile){
        //asigna la variable local a la global para utilizarla en el callback del segundo get
        xsl = xslFile;
        $.get("http://api.twitter.com/1/statuses/public_timeline.xml", function(xmlTwitter){
            if (window.ActiveXObject)
            {
                ex=xmlTwitter.transformNode(xsl);
                $("body").append(ex);
            }
           // code para Mozilla, Firefox, Opera, etc.
           else if (document.implementation && document.implementation.createDocument)
           {
               xsltProcessor=new XSLTProcessor();
               xsltProcessor.importStylesheet(xsl);
               resultDocument = xsltProcessor.transformToFragment(xmlTwitter,document);
              $("body").append(resultDocument);
           }
       }, "xml");
    }, "xml");
});
</script>

Se obtiene el XSL y el XML, luego se valida para determinar el navegador en que se está ejecutando el script.
Al XML se le aplica la transformación y el resultado se agrega a la página.

Gracias a etiquetas como se pueden lograr manipulaciones rápidas de información. XSLT cuenta con más etiquetas, ejemplos de su uso pueden encontrarse en el sitio de w3schools

Opciones de submit para forms en html

Formulario pc

Form básico de html

Es la forma más sencilla de implementar un formulario en html. Es rápido de desarrollar y sencillo para probar.

<form action="process.php" method="post">
  Nombre: <input name="fname" type="text" />
  <input type="submit" value="Submit" />
</form>

Al darle clic al botón submit el navegador dirige al usuario a la página process.php. En php se obtiene la información del formulario consultando, en el caso del ejemplo, la variable $_POST ya que se indicó que el método de envío del formulario es post.
Continue reading

WordPress plugin – Hola mundo

Un plugin de wordpress te permite personalizar tu sitio web y aumentar las funcionalidades.

Los plugins se localizan en el directorio wp-content/plugins/ y pueden estar en único archivo *.php o en varios archivos. Los plugins que requieren de más de un archivo se incluyen en una carpeta dentro del directorio.

Debes asegurarte de escoger un nombre único para tu plugin porque ese archivo o directorio debe tener ese nombre por lo que no pueden existir dos iguales.

Vamos a crear un archivo llamado first_wp_plugin.php que contendrá lo siguiente: Continue reading

Parámetros flashvars a un swf en actionscript 3

Cuando tienes un sitio en flash te puede ser útil pasar parámetros del servidor al momento de cargar el swf.

Para incluir el swf al sitio lo más sencillo es usar el html generado por flash al publicar. En caso de que no se genere puedes ir a File->Publish Settings y marcar la casilla de html, luego hacer clic en publish.

El código generado inicia con la etiqueta <object> y contiene varios parámetros. Para incluir tus parámetros se agrega una etiqueta <param> adicional:

<param name="flashvars" value="parametro1=hola&variable=mundo" />

La propiedad name debe ser flashvars. Se pueden incluir los parámetros que sean necesarios y cada uno debe separarse por &

Una vez en flash para obtener los valores se debe leer la propiedad parameters del loaderInfo

var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
ExternalInterface.call("alert",paramObj.parametro1 + " " + paramObj.variable);

De esta manera puedes obtener el valor de los parámetros como propiedades del objeto parameters del loaderInfo utilizando los mismos nombres que se usaron en la propiedad value.

Propósitos de un desarrollador web para el 2011

En el inicio de un nuevo año es importante hacer un recuento de nuestros logros, proyectos que quedaron pendientes y definir nuevas metas para este 2011.

Si eres web developer ó deseas desempeñarte en este sector tecnológico es recomendable cultivar el hábito del aprendizaje constante y tener claro algunas de las tecnologías, herramientas, leguajes de programación y distintos API’s que podrías aprender para hacer del internet un mejor lugar.

Comparto entonces algunas de las cosas que me interesan aprender y/o perfeccionar durante este año.

Patrones de diseño para aplicaciones web

Después de muchos proyectos que se desarrollan desde cero llegas a notar que ciertas soluciones se adaptan fácilmente a problemas que en apariencia son totalmente distintos. Personalmente llevo meses cansado de “inventar el agua tibia”, es decir, buscar la mejor manera de superar un problema que probablemente se ha resuelto cientos de veces.

Los patrones de diseño en Arquitectura de Software brindan herramientas efectivas para solución de distintos problemas y sirven también de base para la organización y estandarización del software en distintos proyectos.

Agradezco la recomendación de libros, sitios web y demás recursos para alcanzar un mejor conocimiento del tema.

Desarrollo de plugins para WordPress

WordPress es el gestor de contenidos utilizado en este sitio y es el CMS favorito de los bloggers alrededor del mundo.

Cuenta con un poderoso API que permite a terceros desarrollar plugins para ampliar su funcionalidad.

Ya sea por la necesidad de características específicas, ofrecer un mejor servicio a clientes ó por cultura popular aprender sobre el desarrollo de plugins de wordpress está en mi to-do list de este 2011.

Aplicaciones para Android y iOS

En Septiembre del 2010 ya se habían vendido más de 7 millones de iPads en el mundo. Para agosto del 2010 ya se reportaban más dispositivos con Android que móviles con iOS.

Las aplicaciones web no son simplemente sitios complejos vistos desde un navegador. Hay muchas más formas de soluciones web como API’s, interfaces móviles para gestión de contenidos, sistemas que residen en la nube accesibles por medio de aplicaciones móvibles, sitios web y aplicaciones de escritorio.

Son muchos los casos de video juegos y sistemas que gracias a los móviles han alcanzado un éxito envidiable por lo que no podemos quedarnos atrás en la tendencia del mercado.

Uso del API de Twitter y del API de Facebook

Desde hace algunos meses he tenido la oportunidad de desarrollar algunas aplicaciones sencillas de Facebook para distintos clientes. La viralidad de esta red social es un excelente recurso para que tus aplicaciones se expandan exponencialmente. La integración de Facebook en sitios web brinda un mejor experiencia a los usuarios y logra incrementar las visitas a los sitios gracias a distintas opciones de compartir y/o recomendar a los amigos.

En el caso de Twitter es posible crear soluciones para uso personalizado, análisis y elaboración de estadísticas y demás usos de carácter comercial y mercadeo. Razones por las cuales existe gran variedad de aplicaciones para satisfacer distintos gustos y necesidades.

Conocer sobre los alcances de estos API’s permite tener una visión más amplia para idear soluciones y nuevas funcionalidades con lo que se pueda ofrecer mayor valor agregado a nuestros clientes.

Existen muchos temas y ciertamente nunca se deja de aprender, pero prefiero dejar la lista corta y poder aprender más sobre estos temas en los próximos meses.

¿Qué otros temas recomiendan aprender durante el 2011?

Kindle Wi-Fi 6″, primeras impresiones

kindle sobre mesa

Hace un par de semanas por fin me llegó el kindle, ese tan sonado lector electrónico de Amazon.

La caja no tiene mayor ciencia pero es suficientemente sencilla para saber donde se abre. Lo primero que vez es la pantalla E-Ink con algunas instrucciones, su similitud con el papel impreso es tan buena que por casi dos minutos pensé (junto con algunos compañeros de oficina) que tenía un plástico adherido a la pantalla. La pequeña guía de inicio rápido tiene un diseño en cartón bastante curioso y apropiado. Lo acompaña el cable para cargarlo y conectarlo por usb a la PC.

Cada libro para Kindle tiene la opción de leer la muestra que consiste en el primer capítulo, como me cuesta decidir he descargado muchos primeros capítulos.

La experiencia de leer con él es mejor de lo que esperaba. Cuenta con botones para pasar de página a ambos lados. En la pantalla solo vez la página y el porcentaje de avance está abajo, no muestra la hora, ni el nombre del libro, ni ningún otro elemento que pueda distraer. El teclado es suficiente para lo que se necesita pero algo complicado para notas largas aunque lo he utilizado muy poco.

Comprar libros es sencillo y ni siquiera tiene confirmación previa, una vez que indicas Buy Now el proceso de descarga inicia de inmediato.

De momento solo tengo tres libros completos. Brain Rules, Getting Real y The long tail se escuchan sugerencias :)

Como crear tu propio blog

Un blog es una excelente herramienta para opinar, compartir tus aficiones con los demás, vender productos y servicios.
Tener tu propio blog es sencillo y completamente gratuito. Aunque con una pequeña inversión también puedes obtener resultados más profesionales.

¿Qué necesitas para esto?

Un tema

Algo sobre que escribir es indispensable. Si es un blog personal lo mejor es buscar en tus pasiones y es importante entender que no tienes que ser experto en el tema para hablar sobre él, se puede también escribir sobre el proceso de aprendizaje, donde obtener más información, entrevistar a otros que comprendan mejor el tema, las posibilidades son muchas.

Una cuenta en wordpress

WordPress es el principal gestor de contenidos para blogs que puedas encontrar en internet. Es gratis, es software libre, fácil de usar y puedes encontrar mucha ayuda sobre este.

Para efectos prácticos es un sitio web http://wordpress.com que te permite crear blogs de manera que puedas accesarlos como http://TUBLOG.wordpress.com

Su interfaz es amigable. Puedes personalizarlo escogiendo de los miles de plantillas (temas) con los que cuenta, también puedes comprar temas más profesionales en sitios como http://woothemes.com y hacer que tu blog sobresalga.

Pasión, pasión y pasión

Escribir sobre los temas que nos gustan es muy motivante y compartirlos con los demás recibiendo comentarios y apreciaciones lo es aún más.

Un blog te puede llevar por caminos inesperados brindándote la oportunidad de conocer a personas con aficiones comunes o interesadas en tus productos o servicios aprender de ellos y divertirte mientras lo llevas a cabo.

Utiliza tu fuente favorita con font-face

@font-face es una técnica para descargar fuentes remotas definida en el estandar css2. Te permite utilizar en tu sitio web fuentes poco convencionales que no requieren estar instaladas previamente en la máquina de quien visita el sitio web.

Para utilizarlo se declara en el css la regla de @font-face por cada familia.

@font-face {
font-family: 'EraserRegular';
src: url('EraserRegular-webfont.eot');
src: local('‚ò∫'), url('EraserRegular-webfont.woff') format('woff'), url('EraserRegular-webfont.ttf') format('truetype'), url('EraserRegular-webfont.svg#webfontEyeFkvc7') format('svg');
font-weight: normal;
font-style: normal;
}

Si te preguntas de donde sale todo ese código tan oscuro, la respuesta la encuentras en http://www.fontsquirrel.com FontSquirrel es un sitio donde encuentras cientos de tipografías para uso comercial totalmente gratuitas. Cada tipografía viene con un ‘kit’ que no es más que el código css para la tipografía y los distintos formatos para descargar por quién visita la página.

font-family: ‘EraserRegular’: Asigna el nombre ‘EraserRegular’ a nuestra fuente.
src: url(‘EraserRegular-webfont.eot’): Para que la tipografía sirva en Internet Explorer
SVG: formato XML soportado en algunos navegadores incluido el iPhone y el iPad

Para aplicar la fuente solo indicas que el font-family sea ‘EraserRegular’

#test p
{
font-family: EraserRegular;
}

Gracias por visitar turosoft.com

Bienvenido a turosoft.com

Hola, mi nombre es Arturo y soy un apasionado de la tecnología, el software y la informática en general. También me gusta la fotografía, la naturaleza y especialmente aprender, aprender para construir nuevas cosas, aprender para convertir sueños en realidades.

Me desempeño como desarrollador web y aprovecharé este espacio para brindar soluciones y recursos a situaciones comunes que aprendo con mi experiencia y que se presentan en distintos proyectos. Aplicaciones web, tendencias para móviles, cloud computing, gráficos por computadora y muchos otros temas estaré abordando.

Me interesa tu opinión sobre los artículos, el sitio en general y principalmente nuevos temas que podría abordar. Me puedes seguir en http://twitter.com/turoart o bien dejar un mensaje en la página de contacto.

Libros que me gustaría leer

Una de las ideas que tengo para este blog es la de crear una página para ir agregando cada libro que leo y dar mi opinión sobre el mismo.

Pero dado que se acerca mi cumpleaños, y navidad :D entonces voy a empezar con los libros que no he leído pero que me llaman la atención leer con una breve reseña del porque me gustaría leerlo.

La última lección – Randy Pausch

[amazon-product alink="0000FF" bordercolor="FFFFFF" height="240"]1401323251[/amazon-product]

Randy Pausch fue profesor de Ciencias de la Computación de Carnegie Mellon. En esta universidad tienen la costumbre de que los profesores realicen lo que llaman The Last Lecture (la última conferencia) en donde exponen lo que sería la última lección que pudieran dar antes de morir. Para Randy no fue difícil dado que los doctores habían confirmado que le quedaban pocos meses de vida.

El 18 de septiembre de 2007 el dio la conferencia y la tituló “Really Achieving Your Childhood Dreams” (alcanzar realmente tus sueños de infancia). El video de la conferencia fue subido a youtube y en semanas se convirtió en un fenómeno siendo nominado para los premios de video de youtube del 2007 http://www.youtube.com/ytawards07

Al momento de escribir esta entrada el video original en inglés había sido visto más de diez millones y medio de ocasiones. A raíz de todo este fenómeno nació el libro que me gustaría leer. Randy murió el 25 de Julio de 2008…

El gen egoísta – Richard Dawkins

[amazon-product alink="0000FF" bordercolor="FFFFFF" height="240"]0199291152[/amazon-product]El gen egoísta es la teoría de la evolución de Richard Dawkins en la que interpreta la evolución de las especies desde el punto de vista genético. Contrario a la teoría tradicional en la que se cree que en la evolución el individuo es el agente sobre el que esta opera, Dawkins propone que son los genes los agentes y que en su egoísmo estos evolucionaron hasta crear organismos complejos que no son más que máquinas de supervivencia de genes.

La inquietud de leer este libro me nació del curso de Introducción a la BioInformática impartido por Francisco Torres.

Física de lo imposible – Michio Kaku

[amazon-product alink="0000FF" bordercolor="FFFFFF" height="240"]0307278824[/amazon-product]En este libro se utilizan ejemplos de cosas comunes en la ciencia ficción como hombres invisibles y la teletransportación para demostrar por medio de la física como estos fenómenos serán una realidad en los años venideros.

Michio Kaku es uno de los divulgadores científicos más conocidos del mundo. Es físico teórico y ocupa la cátedra Henry Semat de Física Teórica en la Universidad de Nueva York. Para leer más sobre él http://es.wikipedia.org/wiki/Michio_Kaku

Breve Historia del Tiempo – Stephen W. Hawking

[amazon-product alink="0000FF" bordercolor="FFFFFF" height="240"]0553385461[/amazon-product]Stephen Hawking es físico del reino unido. Sufre esclerosis lateral amiotrófica, enfermedad que lo tiene discapacitado por lo que requiere de un sintetizador de voz para que por medio de una computadora pueda expresarse.

Ha trabajado en temas relacionados al origen del universo. Demostró que los agujeros negros no son totalmente negros, es decir, pueden emitir radiación. Cuenta con doce doctorados honoris causa y el premio Príncipe de Asturias entre otros.

Hay una versión más reciente de este libro llamada Brevísima Historia del Tiempo