XSL - comportamiento extraño

   
Vista:

comportamiento extraño

Publicado por Felipe (2 intervenciones) el 15/11/2010 13:45:51
Hola buenos días,

Se me ha presentado un problema y no he encontrado que habrá gatillado el inconveniente. El escenario; una solución .net con varios proyectos, uno de estos es el proyecto web que para gestionar el despliegue de información al usuario utiliza un archivo xsl y un xml. Debido a un requerimiento se tuvo que disgregar el archivo .xsl que gestiona todo el despliegue al usuario independiente de la funcionalidad a desplegar, ahora se tuvo que hacer un .xsl especifico por entidad para que de esta forma solamente cargue lo necesario y no los template de otras entidades que no son necesarias (dependiendo de lo que pincha el usuario en el menu).
Entonces se creo un nuevo archivo comun .xsl el cual contiene variables que son ocupadas por todos los template además de agregar unas funciones comunes para todos los futuros .xsl especificos. Luego de esto se crearon los .xsl especificos agregando a través de <include> el archivo comun para todos.
Dentro de los template existe una funcion que es de C# la cual se encuentra en el archivo comun .xsl que les mencionaba anteriormente. Luego de esto lleve estos cambios a otras maquinas teniendo un resultado inesperado en una de ellas. En la máquina A realice los cambios necesarios para poder tener .xsl especificos por entidad al igual que en la maquina B sin tener problemas, pero en la máquina A al construir la solución y al levantar la aplicación, en el momento que se carga el template a través de XslTransform(xdoc, argListForXslt, sw) me gatilla un error que se genera en una funcion que se encuentra en el xsl comun. Sin tener resultados exitosos luego de haber revisado la funcion, y haber comparado que la maquina A tiene los mismos fuentes que la maquina B, decidi copiar los fuentes de la maquina A (que es la maquina que funciona sin problemas) a la maquina B, que es la que presenta el problema. Luego de esto levante la aplicacion en la máquina B y de nuevo el error se encuentra presente :S. Algo raro decidi borrar los archivos temporales de microsoft asp.net que se encuentran en la carpeta de windows (ya que pense que podia ser eso) y nada aun sigo con el problema. Cabe detallar que los fuentes se encuentran en la misma maquina Fuentes I y Fuentes II, pero hice la distinción de llamar máquina A y máquina B, debido a que son distintos usuarios que se autentican en una misma maquina virtual windows con distintas cuentas. No he logrado aun de dar con la solución del inconveniente me parece raro que copiando los Fuentes I (que son lso fuentes que funcionan) y renombrandolo con otro nombre y luego de esto el usuario B levanta los fuentes reconstruye la solucion y levanta la aplicación, sigue teniendo el mismo problema. He pensado realizar el ejercicio de que el usuario que le funciona los fuentes abra los fuentes que no funcionan reconstruya la solución y levante la aplicación y revisar si funciona bien, como tambien el otro ejercicio que he pensado vendria siendo que el usuario que no le funciona los fuentes, abra los fuentes que si funcionan reconstruya la solución levante la aplicación y ver los resultados. Pero realizar estos ejercicios me generan un poco de incertidumbre, ya que no me seria para nada grato que los fuentes que en estos momentos funcionan dejen de hacerlo.
Bueno amigos, les doy las gracias de antemano y ante cualquier especificacion del incoveniente me avisan y aclaro un poco mas.

Saludos a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comportamiento extraño

Publicado por Felipe (2 intervenciones) el 16/11/2010 14:00:35
Hola Buenos Días. Detallo un poco más sobre el problema


A través de un control .ascx formo el string por el cual preguntaré en el web.config para saber cual es el .xls que debo usar, escribiré un poco del código para describir de mejor manera:


strSpecificTemplate = "XXLGridTemplate" + "_" + arr[0].ToUpper().Trim();


Este es el código que se encuentra en el control, en el cual se define la variable con el prefijo que tienen todos los GridTemplate específicos (XXLGridTemplate) concatenando "_" y el identificador único de la entidad en cuestión arr[0].ToUpper().Trim();


Supongamos que en este caso la variable strSpecificTemplate posee un valor igual GridTemplate_QQ, luego de esto en el mismo control se realiza la llamada al web.config a través de:

xslPath = ConfigurationManager.AppSettings[strSpecificTemplate];


En donde la variable xlsPath tendrá el valor de la ruta del .xls especifico de la entidad en cuestión, como por ejemplo:


<add key="GridTemplate_QQ" value="../XML/NombreAplicacion/GridTemplate_QQ.xsl"/>


Ahora detallando el archivo común (incluido en cada GridTemplate_?? especifico dependiendo de la entidad) GridTemplateCommon.xsl el cual tiene una apariencia de este estilo:


<?xml version="1.0" encoding="utf-8"?>


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:asp="remove" xmlns:ajaxToolkit="remove" xmlns:TMExt="remove" xmlns:loop="http://informatik.hu-berlin.de/loop" xmlns:msxsl="urn:schemas-microsoft-com:xslt"

xmlns:Testing="urn:my-scripts" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:myCustDate="urn:custDate">



<xsl:param name="transname" />

<xsl:param name="Nuemrodetarjeta"/>

<xsl:param name="TipoCuenta"/>

AQUI ES DONDE EMPIEZO A ESCRIBIR LAS FUNCIONES C#

<!--xmlns:myCustDate="urn:custDate">-->

<msxsl:script language="C#" implements-prefix="Testing">

<![CDATA[

public string currencyFormat(string currVal, string Moneda)
{

}

ESA ES LA FUNCIÓN QUE GENERA EL PROBLEMA.

Ahora detallo el archivo .xls especifico en donde incluyo el archivo común

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:asp="remove" xmlns:ajaxToolkit="remove" xmlns:TMExt="remove" xmlns:loop="http://informatik.hu-berlin.de/loop" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:Testing="urn:my-scripts" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:myCustDate="urn:custDate">


AQUI ES DONDE INCLUYO EL ARCHIVO COMUN
<xsl:include href="GridTemplateCommon.xsl"/>

<xsl:template match="/" >
<xsl:call-template name="ChooseTemplate" />
</xsl:template>

<xsl:template name="ChooseTemplate">
<xsl:choose>

<xsl:when test="'TEMPLATE1' = $transname">
<xsl:call-template name="TEMPLATE1" />
</xsl:when>

Supongamos que para este caso la variable $transname toma el valor TEMPLATE1, luego de esto se llama al template TEMPLATE1, en donde este dentro de su logica posee la llamada a la funcion que genera el problema


<xsl:value-of select="Testing:currencyFormatHist($Comision,$Moneda)" />;

Bueno ahi hay un poco más de detalle, cabe destacar que cada template especifico incluye el archivo comun anteriormente nombrado, bueno ojala sirva un poco el detalle


Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar