1. Cree un nuevo proyecto web vs2003 y asígnele el nombre XMLTest
2. Elimine todo el contenido de WebForm1.aspx en el directorio del proyecto, dejando solo una instrucción en la parte superior:
<%@ Page language="c#" Codebehind="WebForm1. aspx .cs" AutoEventWireup="false" Hereda="XMLTest.WebForm1" %>
3. Modifique el contenido en WebForm1.aspx.cs y agregue Page_Load:
El siguiente es un fragmento de referencia:
Documento XmlDocument=nuevo documento Xml();
Cadena xmlfile=cadena.Vacío;
xmlfile=Context.Request.PhysicalApplicationPath+(Request.QueryString["sel"].ToString()=="xml"?" \hello.xml":"\hello.xsl ");
doc.Load(archivoxml);
Respuesta.Escribir(doc.InnerXml);
4. Agregue test.htm en el directorio raíz del proyecto y configúrelo como página de inicio del proyecto:
La siguiente es una cita:
<html>
<cabeza>
<título></título>
</cabeza>
<cuerpo>
<div id="resTree"></div>
<FONT face="宋体"></FONT><tipo de entrada="botón" valor="Ejecutar" onclick="GetXml()"><BR>
<lenguaje de escritura="JScript">
var srcTree,xsltTree,xt;
var http_request = falso;
función ObtenerXml()
{
srcTree = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
srcTree.async=false;
xsltTree= nuevo ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xsltTree.async = falso;
xt=nuevo ActiveXObject("MSXML2.XSLTemplate");
resTree.innerHTML="";
makeRequest("WebForm1.aspx?sel=xml",GetXml_CB);
}
función makeRequest(url,devolución de llamada) {
http_request = falso;
if (ventana.XMLHttpRequest) { // Mozilla, Safari,...
http_request = nuevo XMLHttpRequest();
si (http_request.overrideMimeType) {
http_request.overrideMimeType('texto/xml');
}
} más si (ventana.ActiveXObject) { // IE
intentar {
http_request = nuevo ActiveXObject("Msxml2.XMLHTTP");
} atrapar (e) {
intentar {
http_request = nuevo ActiveXObject("Microsoft.XMLHTTP");
} atrapar (e) {}
}
}
si (!http_request) {
alert('Renunciando :( No se puede crear una instancia XMLHTTP');
devolver falso;
}
http_request.onreadystatechange = devolución de llamada;
http_request.open('OBTENER', URL, verdadero);
http_request.send(nulo);
}
función GetXml_CB() {
si (http_request.readyState == 4) {
si (http_request.status == 200) {
srcTree.loadXML(http_request.responseText);
makeRequest("WebForm1.aspx?sel=xsl",GetXsl_CB);
} demás {
alert('Hubo un problema con la solicitud.');
}
}
}
función GetXsl_CB(){
si (http_request.readyState == 4) {
si (http_request.status == 200) {
xsltTree.loadXML(http_request.responseText);
xt.stylesheet=xsltTree;
var proc=xt.createProcessor();
proc.input=srcTree;
proc.transform();
resTree.innerHTML=proc.output;
} demás {
alert('Hubo un problema con la solicitud.');
}
}
}
función makeRequest(url,devolución de llamada) {
http_request = falso;
if (ventana.XMLHttpRequest) { // Mozilla, Safari,...
http_request = nuevo XMLHttpRequest();
si (http_request.overrideMimeType) {
http_request.overrideMimeType('texto/xml');
}
} más si (ventana.ActiveXObject) { // IE
intentar {
http_request = nuevo ActiveXObject("Msxml2.XMLHTTP");
} atrapar (e) {
intentar {
http_request = nuevo ActiveXObject("Microsoft.XMLHTTP");
} atrapar (e) {}
}
}
si (!http_request) {
alert('Renunciando :( No se puede crear una instancia XMLHTTP');
devolver falso;
}
http_request.onreadystatechange = devolución de llamada;
http_request.open('OBTENER', URL, verdadero);
http_request.send(nulo);
}
</script>
</body>
</html>
5. Ejecute el proyecto y vea el efecto.
hello.xml (Nota: mi documento xml no especifica el nombre del archivo de análisis xsl correspondiente)
El siguiente es un fragmento de cita:
<?xml version='1.0'?>
<menú-desayuno>
<comida>
<nombre>Gofres belgas</nombre>
<precio>$ 5,95</precio>
<descripción>Dos de nuestros famosos gofres belgas
con mucho jarabe de arce auténtico.</description>
<calorías>650</calorías>
</comida>
<comida>
<name>Waffles belgas de fresa</name>
<precio>$ 7,95</precio>
<descripción>Gofres belgas ligeros cubiertos con
fresas y crema batida.</description>
<calorías>900</calorías>
</comida>
<comida>
<name>Gofres belgas con frutos rojos</name>
<precio>$8,95</precio>
<descripción>Gofres belgas ligeros cubiertos
con un surtido de bayas frescas
y nata montada.</description>
<calorías>900</calorías>
</comida>
<comida>
<nombre>tostadas francesas</nombre>
<precio>$4.50</precio>
<descripción>Rebanadas gruesas hechas con nuestra
pan de masa madre.</description>
<calorías>600</calorías>
</comida>
<comida>
<nombre>Desayuno casero</nombre>
<precio>$6,95</precio>
<descripción>Dos huevos, tocino o salchicha, tostadas,
y nuestras siempre populares croquetas de patata.</description>
<calorías>950</calorías>
</comida>
</breakfast-menu>
hello.xsl
El siguiente es un fragmento citado:
<?xml versión="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:template match="/menú-desayuno">
<xsl:for-each select="comida">
<DIV STYLE="color de fondo: verde azulado; color: blanco; relleno: 4px">
<SPAN STYLE="font-weight:bold; color:blanco"><xsl:value-of select="nombre"/></SPAN>
a<xsl:valor-de seleccionar="precio"/>
</DIV>
<DIV STYLE="margen-izquierdo:20px; margen-inferior:1em; tamaño de fuente:10pt">
<xsl:valor-de selección="descripción"/>
<SPAN STYLE="font-style:italic">
<xsl:value-of select="calorías"/> Hola
</SPAN>
</DIV>
</xsl:para-cada>
</xsl:plantilla>
</xsl:hoja de estilo>
El documento xml solo contiene datos puros. Si necesita mostrarse en la página html, generalmente necesita usar un documento xsl personalizado para analizar o leer manualmente el valor en el xml a través de js y mostrarlo en el árbol dom. html.Al usar el documento xsl Al analizar, el documento xsl correspondiente debe especificarse en el documento xml correspondiente para mostrarlo normalmente. Sin embargo, cuando algunos programas generan dinámicamente el documento xml, no se especifica el documento xsl correspondiente. el documento xsl correspondiente debe cargarse por otros medios. Para analizar, por supuesto, al generar documentos XML en el lado del servidor, también se puede lograr a través de algunas API XML. Lo que describo aquí es una forma de lograrlo a través de JS. De esta manera, se dejan de lado las limitaciones de la plataforma del servidor. El servidor solo necesita generar el documento xml correspondiente (.net/j2ee es aceptable) y enviar el documento xsl correspondiente al cliente (puede generar una secuencia o directamente). en Cliente carga el documento xsl).
Hay algunas cosas a tener en cuenta aquí. Generalmente usamos el componente Msxml2.Document para cargar documentos xml, pero cuando usamos xsl dinámicamente para analizar documentos xml, se deben usar componentes de subprocesos gratuitos como Msxml2.FreeThreadedDOMDocument y se debe usar MSXML2.XSLTemplate. Los componentes de plantilla se utilizan para cargar datos xml y xsl. A través del método de transformación de MSXML2. Instale el paquete de componentes msxml actualizado y especifique un nuevo nombre, como Msxml2.FreeThreadedDOMDocument.4.0. Se puede descargar desde el sitio web de M$.
Demostración: http://www.21cz.cn/xmltest/test.htm
Vista de archivo xml: http://www.21cz.cn/xmltest/hello.xml
Ver archivo xsl: http://www.21cz.cn/xmltest/hello.xsl