Actualizando los términos de un smart tag simple con Sql-Server

Fecha: 07/Feb/2005 (Enero 2005)
Autor: José Terranova Navarro (jterrano@hotmail.com)

 


Encontré una nueva manera de actualizar un Smart Tag Simple, es decir un Smart Tag creado de forma sencilla con algún editor de texto. La idea es hacer uso de las capacidades de SQL Server para el manejo de XML.

  Normalmente un Smart Tag Simple actualizable es algo como esto:

  <of:smarttaglist xmlns:of="urn:schemas-microsoft-com:smarttags:list">

            <of:name>Lista de Empleados</of:name>

            <of:lcid>3082</of:lcid>

            <of:description>Lista de Empleados de "El Super"</of:description>

            <of:moreinfourl>http://localhost/elsupersql/about.html</of:moreinfourl>

            <of:updateable>true</of:updateable>

            <of:autoupdate>true</of:autoupdate>

            <of:lastcheckpoint>2</of:lastcheckpoint>

            <of:lastupdate>0</of:lastupdate>

            <of:updateurl>http://localhost/elsuper/ListaEmpleadosUp.xml</of:updateurl>

            <of:updatefrequency>1</of:updatefrequency>

            <of:smarttag type="urn:elsuper:smarttags#EmpleadosList">

                        <of:caption>Lista de Empleados de "El Super"</of:caption>

                        <of:terms>

                                   <of:termlist>

                                               ESTEFANIA RIVERA TOALA, FANNY JIMENEZ YEPEZ

                                   </of:termlist>

                        </of:terms>

                        <of:actions>

                                   <of:action id="Sendmail">

                                               <of:caption>Enviar un mail</of:caption>

                                               <of:url>mailto:{TEXT}</of:url>

                                   </of:action>

                        </of:actions>

            </of:smarttag>

</of:smarttaglist>

 

Este archivo se debe guardar normalmente en la carpeta  “Archivos de programa\Archivos comunes\Microsoft Shared\Smart Tag\Lists” de la computadora cliente. Las negritas indican los parámetros de actualización del Smart Tag. Para que se actualice debe haber por lo menos un término en la lista.

En este ejemplo el archivo ListaEmpleadosUp.xml debe residir en el servidor (http://localhost/elsuper/ListaEmpleadosUp.xml) y esta definido algo así:

<ofup:smarttaglistupdate xmlns:ofup="urn:schemas-microsoft-com:smarttags:listupdate">

            <ofup:checkpoint>3</ofup:checkpoint>

            <ofup:smarttaglistdefinition>

http://localhost/elsupersql/empleados.xml       

</ofup:smarttaglistdefinition>

</ofup:smarttaglistupdate>

La clave de la actualización es la relación entre los elementos “lastcheckpoint” y “checkpoint”, y funciona así: si “checkpoint” es mayor a “lastcheckpoint” entonces se procede a actualizar la lista de términos.

Configurando el soporte de SQL XML.

En primer lugar debemos configurar el soporte SQL XML para Internet Information Server y crear un directorio virtual, tecleamos el nombre y su ubicación física: 

Definimos la seguridad, y la base de datos que va a ser expuesta:

Definimos también las opciones de acceso a la información que queremos.

Si queremos que se soporten consultas SQL como direcciones URL entonces activamos la casilla “Allow URL queries”.

Si queremos que se soporten llamadas a plantillas predefinidas (como en nuestro caso) activamos la casilla “Allow templates queries”.

Si queremos que se soporten consultas vía XPath entonces activamos “Allow XPath”.

Si queremos permitir la subida de información, entonces activamos la casilla “Allow POST”, y definimos el tamaño máximo de carga.

 

Creando la plantilla de actualización

El siguiente archivo permite la consulta de datos de la tabla empleados, la porción de código que realiza esto esta en negritas. Ponga atención que a cada nombre de empleado se le concatena la coma, pues la lista de términos debe ir separada por comas.

<of:smarttaglist xmlns:of="urn:schemas-microsoft-com:smarttags:list">

<of:name>Lista de Empleados</of:name>

<of:lcid>3082</of:lcid>

<of:description>Lista de Empleados de "El Super"</of:description>

<of:moreinfourl>http://localhost/elsupersql/about.html</of:moreinfourl>

            <of:updateable>true</of:updateable>

            <of:autoupdate>true</of:autoupdate>

            <of:lastcheckpoint>3</of:lastcheckpoint>

            <of:lastupdate>0</of:lastupdate>

            <of:updateurl>http://localhost/elsuper/ListaEmpleadosUp.xml</of:updateurl>

            <of:updatefrequency>1</of:updatefrequency>

            <of:smarttag type="urn:elsuper:smarttags#EmpleadosList">

            <of:caption>Lista de Empleados de "El Super"</of:caption>

            <of:terms>

            <of:termlist>

            <sql:query xmlns:sql="urn:schemas-microsoft-com:xml-sql">

             SELECT  nombre + ', '

             FROM empleado

             ORDER BY NOMBRE ASC

            </sql:query>

            </of:termlist>

            </of:terms>

                        <of:actions>

                                    <of:action id="Sendmail">

                                                <of:caption>Enviar un mail</of:caption>

                                                <of:url>mailto:{TEXT}</of:url>          

                                   </of:action>

                        </of:actions>

            </of:smarttag>

</of:smarttaglist>

Para que la plantilla este disponible, debe estar definida bajo un nombre virtual, entonces asociamos la plantilla “Empleados” con el archivo “Empleados.xml”.

Hagamos una prueba, ejecutemos un navegador y pongamos el url de nuestra plantilla, si todo está bien debemos observar algo como esto:

Ahora si que todo esta funcionando veamos como funciona en Word:

 

Como quedó expuesto, se puede ver el método no es tan complicado. Realmente son pocos los cambios necesarios que debemos realizar para que un Simple Smart Tag List sea actualizable directamente por medio de SQL Server, y sobre todo es que sigue siendo un Simple Smart Tag List.


ir al índice