1. Créez un nouveau projet Web vs2003 et nommez-le XMLTest
2. Supprimez tout le contenu de WebForm1.aspx dans le répertoire du projet, en ne laissant qu'une seule instruction en haut :
<%@ Page Language="c#" Codebehind="WebForm1. aspx .cs" AutoEventWireup="false" Inherits="XMLTest.WebForm1" %>
3. Modifiez le contenu dans WebForm1.aspx.cs et ajoutez Page_Load :
Ce qui suit est un fragment de référence :
XmlDocument doc=nouveau XmlDocument();
String xmlfile=string.Empty;
xmlfile=Context.Request.PhysicalApplicationPath+(Request.QueryString["sel"].ToString()=="xml"?" \hello.xml":"\hello.xsl ");
doc.Load(fichierxml);
Réponse.Write(doc.InnerXml);
4. Ajoutez test.htm dans le répertoire racine du projet et définissez-le comme page d'accueil du projet :
Ce qui suit est une citation :
<html>
<tête>
<titre></titre>
</tête>
<corps>
<div id="resTree"></div>
<FONT face="宋体"></FONT><input type="button" value="Execute" onclick="GetXml()"><BR>
<langage de script="JScript">
var srcTree,xsltTree,xt;
var http_request = faux ;
fonction GetXml()
{
srcTree = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
srcTree.async=false ;
xsltTree= new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xsltTree.async = faux ;
xt=nouveau ActiveXObject("MSXML2.XSLTemplate");
resTree.innerHTML="";
makeRequest("WebForm1.aspx?sel=xml",GetXml_CB);
}
fonction makeRequest (url, rappel) {
http_request = faux ;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = nouveau XMLHttpRequest();
si (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} sinon if (window.ActiveXObject) { // IE
essayer {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} attraper (e) {
essayer {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} attraper (e) {}
}
}
si (!http_request) {
alert('Abandonner :( Impossible de créer une instance XMLHTTP');
renvoie faux ;
}
http_request.onreadystatechange = rappel ;
http_request.open('GET', url, true);
http_request.send(null);
}
function GetXml_CB() {
if (http_request.readyState == 4) {
si (http_request.status == 200) {
srcTree.loadXML(http_request.responseText);
makeRequest("WebForm1.aspx?sel=xsl",GetXsl_CB);
} autre {
alert('Il y a eu un problème avec la requête.');
}
}
}
fonction 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;
} autre {
alert('Il y a eu un problème avec la requête.');
}
}
}
fonction makeRequest(url,callback) {
http_request = faux ;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = nouveau XMLHttpRequest();
si (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} sinon if (window.ActiveXObject) { // IE
essayer {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} attraper (e) {
essayer {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} attraper (e) {}
}
}
si (!http_request) {
alert('Abandonner :( Impossible de créer une instance XMLHTTP');
renvoie faux ;
}
http_request.onreadystatechange = rappel ;
http_request.open('GET', url, true);
http_request.send(null);
}
</script>
</body>
</html>
5. Exécutez le projet et voyez l'effet !
hello.xml (Remarque : mon document XML ne spécifie pas le nom du fichier d'analyse XML correspondant)
Ce qui suit est un fragment de citation :
<?xml version='1.0'?>
<menu-petit-déjeuner>
<nourriture>
<name>Gaufres belges</name>
<prix>5,95 $</prix>
<description>Deux de nos fameuses gaufres belges
avec beaucoup de vrai sirop d'érable.</description>
<calories>650</calories>
</nourriture>
<nourriture>
<name>Gaufres belges aux fraises</name>
<prix>7,95 $</prix>
<description>Gaufres belges légères recouvertes de
fraises et crème fouettée.</description>
<calories>900</calories>
</nourriture>
<nourriture>
<name>Gaufres belges aux petits fruits</name>
<prix>8,95 $</prix>
<description>Gaufres belges légères recouvertes
avec un assortiment de baies fraîches
et crème fouettée.</description>
<calories>900</calories>
</nourriture>
<nourriture>
<nom>pain doré</nom>
<prix>4,50 $</prix>
<description>Tranches épaisses réalisées à partir de nos
pain au levain.</description>
<calories>600</calories>
</nourriture>
<nourriture>
<name>Petit-déjeuner maison</name>
<prix>6,95 $</prix>
<description>Deux œufs, bacon ou saucisses, pain grillé,
et nos très populaires pommes de terre rissolées.</description>
<calories>950</calories>
</nourriture>
</breakfast-menu>
hello.xsl
Ce qui suit est un fragment cité :
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:template match="/breakfast-menu">
<xsl:for-each select="food">
<DIV STYLE="background-color:sarcelle; couleur:blanc; padding:4px">
<SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN>
à<xsl:value-of select="price"/>
</DIV>
<DIV STYLE="margin-left:20px; margin-bottom:1em; font-size:10pt">
<xsl:value-of select="description"/>
<SPAN STYLE="font-style:italic">
<xsl:value-of select="calories"/> Hé
</SPAN>
</DIV>
</xsl:for-each>
</xsl:template>
</xsl:feuille de style>
Le document XML ne contient que des données pures. S'il doit être affiché dans la page HTML, il doit généralement utiliser un document XML personnalisé pour analyser, ou lire manuellement la valeur dans le XML via js et l'afficher dans l'arborescence dom du fichier XML. html. Lors de l'utilisation du document xsl Lors de l'analyse, le document xsl correspondant doit être spécifié dans le document xml correspondant pour l'afficher normalement. Cependant, lorsque certains programmes génèrent dynamiquement le document xml, le document xsl correspondant n'est pas spécifié. le document xsl correspondant doit être chargé par d'autres moyens. Pour analyser, bien sûr, lors de la sortie de documents XML côté serveur, cela peut également être réalisé via certaines API XML. Ce que je décris ici est un moyen d'y parvenir via JS. De cette façon, les limitations de la plate-forme serveur sont mises de côté. Le serveur n'a qu'à sortir le document XML correspondant (.net/j2ee est acceptable) et à envoyer le document XML correspondant au client (il peut générer un flux ou directement). dans le client charge le document XML).
Il y a quelques points à noter ici. Nous utilisons généralement le composant Msxml2.Document pour charger des documents XML, mais lors de l'utilisation dynamique de XSL pour analyser des documents XML, des composants de thread gratuits tels que Msxml2.FreeThreadedDOMDocument doivent être utilisés et MSXML2.XSLTemplate doit être utilisé. Les composants de modèle sont utilisés pour charger les données XML et XSL. Via la méthode de transformation de MSXML2, installez le package de composants msxml mis à jour et spécifiez un nouveau nom, tel que Msxml2.FreeThreadedDOMDocument.4.0. Le dernier composant msxml est désormais 6.0beta. peut être téléchargé sur le site Web de M$.
Démo : http://www.21cz.cn/xmltest/test.htm
Affichage du fichier XML : http://www.21cz.cn/xmltest/hello.xml
Afficher le fichier XSL : http://www.21cz.cn/xmltest/hello.xsl