1. Erstellen Sie ein neues vs2003-Webprojekt und nennen Sie es XMLTest.
2. Löschen Sie den gesamten Inhalt von WebForm1.aspx im Projektverzeichnis und lassen Sie oben nur eine Anweisung übrig:
<%@ Page language="c#" Codebehind="WebForm1. aspx .cs" AutoEventWireup="false" Inherits="XMLTest.WebForm1" %>
3. Ändern Sie den Inhalt in WebForm1.aspx.cs und fügen Sie Page_Load hinzu:
Das Folgende ist ein Referenzfragment:
XmlDocument doc=new XmlDocument();
String xmlfile=string.Empty;
xmlfile=Context.Request.PhysicalApplicationPath+(Request.QueryString["sel"].ToString()=="xml"?" \hello.xml":"\hello.xsl ");
doc.Load(xmlfile);
Response.Write(doc.InnerXml);
4. Fügen Sie test.htm zum Projektstammverzeichnis hinzu und legen Sie es als Projekthomepage fest:
Das Folgende ist ein Zitat:
<html>
<Kopf>
<title></title>
</head>
<Körper>
<div id="resTree"></div>
<FONT face="宋体"></FONT><input type="button" value="Execute" onclick="GetXml()"><BR>
<script language="JScript">
var srcTree,xsltTree,xt;
var http_request = false;
Funktion GetXml()
{
srcTree = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
srcTree.async=false;
xsltTree= new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xsltTree.async = false;
xt=new ActiveXObject("MSXML2.XSLTemplate");
resTree.innerHTML="";
makeRequest("WebForm1.aspx?sel=xml",GetXml_CB);
}
Funktion makeRequest(url,callback) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
versuchen {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} fangen (e) {
versuchen {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} fangen (e) {}
}
}
if (!http_request) {
warning('Giving up :( XMLHTTP-Instanz kann nicht erstellt werden');
return false;
}
http_request.onreadystatechange = Rückruf;
http_request.open('GET', url, true);
http_request.send(null);
}
function GetXml_CB() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
srcTree.loadXML(http_request.responseText);
makeRequest("WebForm1.aspx?sel=xsl",GetXsl_CB);
} anders {
Alert('Bei der Anfrage ist ein Problem aufgetreten.');
}
}
}
Funktion GetXsl_CB(){
if (http_request.readyState == 4) {
if (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;
} anders {
Alert('Bei der Anfrage ist ein Problem aufgetreten.');
}
}
}
function makeRequest(url,callback) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
versuchen {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} fangen (e) {
versuchen {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} fangen (e) {}
}
}
if (!http_request) {
warning('Giving up :( XMLHTTP-Instanz kann nicht erstellt werden');
return false;
}
http_request.onreadystatechange = Rückruf;
http_request.open('GET', url, true);
http_request.send(null);
}
</script>
</body>
</html>
5. Führen Sie das Projekt aus und sehen Sie sich den Effekt an!
(Hinweis: In meinem XML-Dokument ist der entsprechende XSL-Parsing-Dateiname nicht angegeben.)
Das Folgende ist ein Zitatfragment:
<?xml version='1.0'?>
<Frühstücksmenü
>
<Essen>
<name>Belgische Waffeln</name>
<price>5,95 $</price>
<description>Zwei unserer berühmten belgischen Waffeln
mit viel echtem Ahornsirup.</description>
<Kalorien>650</Kalorien>
</food>
<Essen>
<name>Belgische Erdbeerwaffeln</name>
<price>7,95 $</price>
<description>Leichte belgische Waffeln bedeckt mit
Erdbeeren und Schlagsahne.</description>
<Kalorien>900</Kalorien>
</food>
<Essen>
<name>Belgische Beerenwaffeln</name>
<price>8,95 $</price>
<description>Leichte belgische Waffeln bedeckt
mit einer Auswahl an frischen Beeren
und Schlagsahne.</description>
<Kalorien>900</Kalorien>
</food>
<Essen>
<name>French Toast</name>
<price>4,50 $</price>
<description>Dicke Scheiben aus unserem Hausgemachten
Sauerteigbrot.</description>
<Kalorien>600</Kalorien>
</food>
<Essen>
<name>Hausgemachtes Frühstück</name>
<price>6,95 $</price>
<description>Zwei Eier, Speck oder Wurst, Toast,
und unsere allseits beliebten Rösti.</description>
<Kalorien>950</Kalorien>
</food>
</breakfast-menu>
hello.xsl
Das Folgende ist ein zitiertes Fragment:
<?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:teal; color:white; padding:4px">
<SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN>
zu<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"/> Hallo
</SPAN>
</DIV>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Das XML-Dokument enthält nur reine Daten. Wenn es auf der HTML-Seite angezeigt werden muss, muss es im Allgemeinen ein benutzerdefiniertes XSL-Dokument zum Parsen verwenden oder den Wert im XML manuell über js lesen und im Dom-Baum anzeigen Bei Verwendung des XSL-Dokuments muss beim Parsen das entsprechende XSL-Dokument angegeben werden, damit es normal angezeigt wird. Wenn einige Programme das XML-Dokument jedoch dynamisch ausgeben, wird das entsprechende XSL-Dokument nicht angegeben. Das entsprechende XSL-Dokument muss beim Ausgeben von XML-Dokumenten natürlich auch über einige XML-APIs geladen werden. Was ich hier beschreibe, ist eine Möglichkeit, dies über JS zu erreichen. Auf diese Weise werden die Einschränkungen der Serverplattform aufgehoben. Der Server muss lediglich das entsprechende XML-Dokument ausgeben (.net/j2ee ist akzeptabel) und das entsprechende XSL-Dokument an den Client ausgeben (er kann einen Stream oder direkt ausgeben). im Client lädt das XSL-Dokument).
Hier sind einige Dinge zu beachten. Wir verwenden im Allgemeinen die Msxml2.Document-Komponente zum Laden von XML-Dokumenten. Bei der dynamischen Verwendung von XSL zum Parsen von XML-Dokumenten müssen jedoch kostenlose Thread-Komponenten wie Msxml2.FreeThreadedDOMDocument und MSXML2.XSLTemplate verwendet werden Zum Laden von XML- und XSL-Daten werden Vorlagenkomponenten verwendet. Installieren Sie das aktualisierte MSXML-Komponentenpaket und geben Sie einen neuen Namen an, z. B. Msxml2.FreeThreadedDOMDocument.4.0 kann von der M$-Website heruntergeladen werden.
Demo: http://www.21cz.cn/xmltest/test.htm
XML-Dateiansicht: http://www.21cz.cn/xmltest/hello.xml
XSL-Datei anzeigen: http://www.21cz.cn/xmltest/hello.xsl