Problema con la insercion de un xhtml con ASP/xml y xsl (super dificil)
Holas... primero que nada me pondré a llorar :'( , tengo un tremendo proyecto que esta sindo paralizado solo por este asunto... si no funciona esto, tendre que cambiar la arquitectura del sistema, cosa que no deseo hacer.
aqui voy:
tengo 4 archivos que para el ejemplo llamaremos : "asp.asp" "xml.xml" "xsl.xsl" y finalmente "xhtml.xhtml"
basicamente la arquitectura es asi.
asp.asp llama al xml.xml guardado en el disco duro y lo formatea segun xsl.xsl, dentro de este se llama al contenido encontrado en xhtml.xhtml el cual es desplegado en la pantalla.
hasta ahi todo bien.
El problema empieza cuando el xml no es llamado desde el disco duro, sino que es llamado desde una variable en la pagina asp.asp
el codigo asp que no da problema es este:
[CODE]
<%
Set xmlObj = Server.CreateObject( "MSXML2.DOMDocument" )
Set xslObj = Server.CreateObject( "MSXML2.DOMDocument" )
xmlObj.load( Server.MapPath("xml.xml"))
xslObj.load( Server.MapPath("xsl.xsl"))
htmlConstruct = xmlObj.TransformNode(xslObj)
Response.Write htmlConstruct
Set xmlObj = nothing
Set xslObj = nothing
%>
[/CODE]
el codigo xml es el siguiente
[CODE]<super>
<principal>
<canal_actual>4</canal_actual>
</principal>
<canal_publicaciones>
<reg>
<id_class>4</id_class>
<xhtml_canal_publicaciones>xhtml.xhtml</xhtml_canal_publicaciones>
</reg>
</canal_publicaciones>
</super>[/CODE]
el codigo xsl es el siguiente
[CODE]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:for-each select="super/canal_publicaciones/reg">
<xsl:if test="id_class = /super/principal/canal_actual">
<xsl:copy-of select="document(xhtml_canal_publicaciones)" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>[/CODE]
el codigo xhtml es el siguiente
[CODE]<?xml version="1.0" encoding="iso8859-1" ?>
<iws_xhtml><b>Hola mundo</b>
</iws_xhtml>[/CODE]
Si se ejecuta todo esto junto todo funciona bien y el texto hola mundo en negritas es desplegado en la pantalla.
[B]PERO[/B]
si es que se usa este codigo para el asp :
[CODE]<%
xml = "<super><principal><canal_actual>4</canal_actual></principal><canal_publicaciones><reg><id_class>4</id_class><xhtml_canal_publicaciones>xhtml.xhtml</xhtml_canal_publicaciones></reg></canal_publicaciones></super>"
Set xmlObj = Server.CreateObject( "MSXML2.DOMDocument" )
Set xslObj = Server.CreateObject( "MSXML2.DOMDocument" )
xmlobj.loadXML xml
xslObj.load( Server.MapPath("xsl.xsl"))
htmlConstruct = xmlObj.TransformNode(xslObj)
Response.Write htmlConstruct
Set xmlObj = nothing
Set xslObj = nothing
%>[/CODE]
el asunto ya no funciona!
al parecer el problema viene cuando el objto xml es cargado desde una variable y no del disco duro.
para ser mas detallista en el analisis del problema.
en el xsl hay una instruccion que aparentemente no funciona cuando el xml no es cargado desde el disco duro, la cual es:
<xsl:copy-of select="document(xhtml_canal_publicaciones)" />
:ojotes: [B]Si alguien sabe Que demonios pueda esta pasando , se lo agradeceria un millon [/B]
Para el sistema, es imperativo poder cargar el xml desde una variable, ya que me permite poder anexar informacion dinamica del ambiente (como datos y preferencias del visitante, fecha,seccion actual a mostrar,etc) anexarla al xml y alimentar asi el xsl para su final despliegue.
aqui voy:
tengo 4 archivos que para el ejemplo llamaremos : "asp.asp" "xml.xml" "xsl.xsl" y finalmente "xhtml.xhtml"
basicamente la arquitectura es asi.
asp.asp llama al xml.xml guardado en el disco duro y lo formatea segun xsl.xsl, dentro de este se llama al contenido encontrado en xhtml.xhtml el cual es desplegado en la pantalla.
hasta ahi todo bien.
El problema empieza cuando el xml no es llamado desde el disco duro, sino que es llamado desde una variable en la pagina asp.asp
el codigo asp que no da problema es este:
[CODE]
<%
Set xmlObj = Server.CreateObject( "MSXML2.DOMDocument" )
Set xslObj = Server.CreateObject( "MSXML2.DOMDocument" )
xmlObj.load( Server.MapPath("xml.xml"))
xslObj.load( Server.MapPath("xsl.xsl"))
htmlConstruct = xmlObj.TransformNode(xslObj)
Response.Write htmlConstruct
Set xmlObj = nothing
Set xslObj = nothing
%>
[/CODE]
el codigo xml es el siguiente
[CODE]<super>
<principal>
<canal_actual>4</canal_actual>
</principal>
<canal_publicaciones>
<reg>
<id_class>4</id_class>
<xhtml_canal_publicaciones>xhtml.xhtml</xhtml_canal_publicaciones>
</reg>
</canal_publicaciones>
</super>[/CODE]
el codigo xsl es el siguiente
[CODE]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:for-each select="super/canal_publicaciones/reg">
<xsl:if test="id_class = /super/principal/canal_actual">
<xsl:copy-of select="document(xhtml_canal_publicaciones)" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>[/CODE]
el codigo xhtml es el siguiente
[CODE]<?xml version="1.0" encoding="iso8859-1" ?>
<iws_xhtml><b>Hola mundo</b>
</iws_xhtml>[/CODE]
Si se ejecuta todo esto junto todo funciona bien y el texto hola mundo en negritas es desplegado en la pantalla.
[B]PERO[/B]
si es que se usa este codigo para el asp :
[CODE]<%
xml = "<super><principal><canal_actual>4</canal_actual></principal><canal_publicaciones><reg><id_class>4</id_class><xhtml_canal_publicaciones>xhtml.xhtml</xhtml_canal_publicaciones></reg></canal_publicaciones></super>"
Set xmlObj = Server.CreateObject( "MSXML2.DOMDocument" )
Set xslObj = Server.CreateObject( "MSXML2.DOMDocument" )
xmlobj.loadXML xml
xslObj.load( Server.MapPath("xsl.xsl"))
htmlConstruct = xmlObj.TransformNode(xslObj)
Response.Write htmlConstruct
Set xmlObj = nothing
Set xslObj = nothing
%>[/CODE]
el asunto ya no funciona!
al parecer el problema viene cuando el objto xml es cargado desde una variable y no del disco duro.
para ser mas detallista en el analisis del problema.
en el xsl hay una instruccion que aparentemente no funciona cuando el xml no es cargado desde el disco duro, la cual es:
<xsl:copy-of select="document(xhtml_canal_publicaciones)" />
:ojotes: [B]Si alguien sabe Que demonios pueda esta pasando , se lo agradeceria un millon [/B]
Para el sistema, es imperativo poder cargar el xml desde una variable, ya que me permite poder anexar informacion dinamica del ambiente (como datos y preferencias del visitante, fecha,seccion actual a mostrar,etc) anexarla al xml y alimentar asi el xsl para su final despliegue.