dueloforyou [Original]
Estimado Dr. GUI:
Tengo una pregunta sobre XML. Publico una página ASP a través de XMLHTTP, envío los datos como HTML y hago object.innerHTML en un div, celda de tabla o cualquier elemento.
El problema que tengo es que una vez que creo un formulario en una página del servidor ASP y lo envío como HTML, todo funciona bien. Pero también quiero la validación de la página por parte del cliente, por lo que coloco un enlace de página JScript en el cuerpo del HTML de respuesta que planeo enviar. Después de hacer esto, el script no se ejecutará.
Cuando incluyo la referencia real de JScript src en la página principal, funciona bien. ¿Esto se debe a que el código JScript no está cargado en el tiempo de ejecución? ¿Es posible responder a una publicación XMLHTTP sin devolver el código JScript y hacer que funcione? ¿Se pueden generar funciones JScript sobre la marcha para las páginas que creo?
Otra forma que no he intentado hacer esto es publicar los datos XML a través de XMLHTTP, luego enviarlos de regreso como datos XML y luego usar una hoja de estilo XSL para transformarlos. Supongo que es posible definir funciones JScript de esa manera. Pero este enfoque parece demasiado complicado. ¿Tiene alguna sugerencia o respuesta?
Gracias por
la respuesta del Dr.
Peter Sung
GUI:Sí, Peter, puedes devolver el código Microsoft JScript en respuesta a una publicación/obtención XMLHTTP y ejecutar ese código. Hacer esto es como coger un trozo del pastel y comérselo después. Como puedes imaginar, la mejor manera de hacer esto es aprovechar una hoja de estilo XSL, esto es fácil una vez que todos los tipos vuelven a la normalidad; El Dr. GUI puede incluso proporcionar un ejemplo rápido. (Por supuesto, existen otras soluciones. Siempre que la respuesta contenga los encabezados y caracteres correctos en el orden correcto, el navegador interpretará la respuesta para que funcione correctamente. Puede aprovechar la concatenación de cadenas para generar la respuesta si es necesario. )
A continuación En su ejemplo, Dr. GUI usa JScript para el código del lado del cliente y VBScript (Microsoft Visual Basic Scripting Edition) en una página ASP. La estrategia adoptada es la siguiente: el archivo XML contiene sólo datos (y una referencia a la hoja de estilo). El archivo XSL contiene todo el formato HTML necesario para formar una página completa (incluidos los scripts implementados). Una página ASP consiste esencialmente en unas cuantas llamadas para crear un objeto XMLHTTP, cargar un archivo XML en el objeto (usando una hoja de estilo implícita) y escribir el HTML resultante en el flujo de respuesta.
Para probar este método, siga los sencillos pasos que se muestran a continuación. Utilice el Bloc de notas para copiar, pegar y guardar todos los archivos en c:inetpubwwwroot.
1.
Cree un archivo denominado books.xml que contenga el siguiente texto XML. Tome nota de la referencia a la hoja de estilo books.xsl. Aparte de eso, este archivo sólo contiene datos.
<?xml versión="1.0"?>
<?xml-stylesheet tipo="text/xsl" href="libros.xsl" ?>
<catálogo>
<libro id="bk101">
<autor>Gambardella, Mateo</autor>
<title>Guía del desarrollador XML</title>
</libro>
<libro id="bk102">
<autor>Ralls, Kim</autor>
<title>Lluvia de medianoche</title>
</libro>
</catálogo>
2.
Luego, cree un archivo llamado books.xsl que contenga el siguiente código. Este archivo es la hoja de estilo a la que hace referencia books.xml creado en el paso 1. Contiene la información necesaria para formatear correctamente el archivo XML anterior en una página HTML e incluso incluir scripts en la página HTML.
<?xml versión="1.0" codificación="UTF-8" ?>
<xsl:versión de hoja de estilo="1.0"
xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:método de salida="html" sangría="sí"/>
<xsl:coincidencia de plantilla="/">
<html>
<cabeza>
<título>Prueba</título>
</cabeza>
<lenguaje de escritura="JScript">
función Test_OnLoad()
{
var objXML = nuevo ActiveXObject("MSXML2.DOMDocument");
objXML.async=false;
objXML.load("libros.xml");
alerta(objXML.xml);
objXML=nulo;
}
</script>
<cuerpo onload="Test_OnLoad()">
<borde de tabla="1">
<xsl:for-each select="catálogo/libro">
<tr>
<td>
<xsl:valor-de seleccionar="autor"/>
</td>
<td>
<xsl:valor-de seleccionar="título"/></td>
</tr>
</xsl:para-cada>
</tabla>
</cuerpo>
</html>
</xsl:plantilla>
</xsl:hoja de estilo>
3.
Finalmente, cree un archivo llamado books.asp que contenga el siguiente código. Este archivo se utiliza únicamente para crear el objeto XMLHTTP, cargar el archivo XML correspondiente y escribir el HTML resultante en el flujo de respuesta.
<%
tenue sxh
Respuesta.contentType = "texto/xml"
establecer sxh = Server.CreateObject ("MSXML2.XMLHTTP.3.0")
sxh.open "OBTENER", http://localhost/books.xml",falso
sxh.enviar
Respuesta.escribir sxh.texto de respuesta
%>
4.
Abra su navegador y navegue hasta http://localhost/books.asp .
5.
Verá una alerta que muestra los datos que contienen books.xml. Esto se hace mediante un script en el archivo XSL. También verá los datos perfectamente formateados en una tabla en la página web. Esto se hace mediante código XSL.