1. Buat proyek web vs2003 baru dan beri nama XMLTest
2. Hapus semua konten WebForm1.aspx di direktori proyek, hanya menyisakan satu pernyataan di atas:
<%@ Page Language="c#" Codebehind="WebForm1.aspx .cs" AutoEventWireup="false" Inherits="XMLTest.WebForm1" %>
3. Ubah konten di WebForm1.aspx.cs dan tambahkan Page_Load:
Berikut ini adalah fragmen referensi:
Dokumen XmlDocument=XmlDocument baru();
String xmlfile=string.Kosong;
xmlfile=Context.Request.PhysicalApplicationPath+(Request.QueryString["sel"].ToString()=="xml"?" \hello.xml":"\hello.xsl ");
doc.Muat(file xml);
Respon.Tulis(doc.InnerXml);
4. Tambahkan test.htm di direktori root proyek dan tetapkan sebagai beranda proyek:
Berikut kutipannya:
<html>
<kepala>
<judul></judul>
</kepala>
<tubuh>
<div id="resTree"></div>
<FONT face="宋体"></FONT><input type="button" value="Execute" onclick="GetXml()"><BR>
<bahasa skrip="JScript">
var srcTree,xsltTree,xt;
var http_request = salah;
fungsi GetXml()
{
srcTree = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
srcTree.async=salah;
xsltTree= new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xsltTree.async = salah;
xt=new ActiveXObject("MSXML2.XSLTemplate");
resTree.innerHTML="";
makeRequest("WebForm1.aspx?sel=xml",GetXml_CB);
}
fungsi makeRequest(url,panggilan balik) {
http_permintaan = salah;
if (window.XMLHttpRequest) {// Mozilla, Safari,...
http_request = XMLHttpRequest baru();
jika (http_request.overrideMimeType) {
http_request.overrideMimeType('teks/xml');
}
} else if (jendela.ActiveXObject) {// YAITU
mencoba {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} tangkapan (e) {
mencoba {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} tangkapan (e) {}
}
}
jika (!http_request) {
alert('Menyerah :( Tidak dapat membuat instance XMLHTTP');
kembali salah;
}
http_request.onreadystatechange = panggilan balik;
http_request.open('GET', url, benar);
http_request.send(null);
}
fungsi GetXml_CB() {
jika (http_request.readyState == 4) {
if (http_request.status == 200) {
srcTree.loadXML(http_request.responseText);
makeRequest("WebForm1.aspx?sel=xsl",GetXsl_CB);
} kalau tidak {
alert('Ada masalah dengan permintaan.');
}
}
}
fungsi GetXsl_CB(){
jika (http_request.readyState == 4) {
if (http_request.status == 200) {
xsltTree.loadXML(http_request.responseText);
xt.stylesheet=xsltPohon;
var proc=xt.createProcessor();
proc.input=srcTree;
proc.transform();
resTree.innerHTML=proc.output;
} kalau tidak {
alert('Ada masalah dengan permintaan.');
}
}
}
fungsi makeRequest(url,panggilan balik) {
http_permintaan = salah;
if (window.XMLHttpRequest) {// Mozilla, Safari,...
http_request = XMLHttpRequest baru();
jika (http_request.overrideMimeType) {
http_request.overrideMimeType('teks/xml');
}
} else if (jendela.ActiveXObject) {// YAITU
mencoba {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} tangkapan (e) {
mencoba {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} tangkapan (e) {}
}
}
jika (!http_request) {
alert('Menyerah :( Tidak dapat membuat instance XMLHTTP');
kembali salah;
}
http_request.onreadystatechange = panggilan balik;
http_request.open('GET', url, benar);
http_request.send(null);
}
</skrip>
</body>
</html>
5. Jalankan proyek dan lihat efeknya!
hello.xml (Catatan: Dokumen xml saya tidak menentukan nama file parsing xsl yang sesuai)
Berikut ini adalah cuplikan kutipan:
<?xml version='1.0'?>
<menu sarapan>
<makanan>
<name>Wafel Belgia</name>
<harga>$5,95</harga>
<deskripsi>Dua Wafel Belgia kami yang terkenal
dengan banyak sirup maple asli.</deskripsi>
<kalori>650</kalori>
</makanan>
<makanan>
<name>Wafel Belgia Stroberi</name>
<harga>$7,95</harga>
<deskripsi>Wafel Belgia ringan dilapisi dengan
stroberi dan krim kocok.</deskripsi>
<kalori>900</kalori>
</makanan>
<makanan>
<name>Wafel Belgia Berry-Berry</name>
<harga>$8,95</harga>
<deskripsi>Wafel Belgia ringan tertutup
dengan berbagai macam buah beri segar
dan krim kocok.</deskripsi>
<kalori>900</kalori>
</makanan>
<makanan>
<nama>Roti Panggang Perancis</nama>
<harga>$4,50</harga>
<deskripsi>Irisan tebal dibuat dari buatan kami sendiri
roti penghuni pertama.</deskripsi>
<kalori>600</kalori>
</makanan>
<makanan>
<name>Sarapan ala Rumahan</name>
<harga>$6,95</harga>
<deskripsi>Dua butir telur, bacon atau sosis, roti panggang,
dan kentang goreng kami yang selalu populer.</description>
<kalori>950</kalori>
</makanan>
</menu-sarapan>
hello.xsl
Berikut ini adalah cuplikan kutipannya:
<?xml versi="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:template match="/menu-sarapan">
<xsl:untuk setiap pilih="makanan">
<DIV STYLE="background-color:teal; color:white; padding:4px">
<SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN>
ke<xsl:nilai-dari pilih="harga"/>
</DIV>
<DIV STYLE="margin-kiri:20px; margin-bawah:1em; ukuran font:10pt">
<xsl:nilai-dari pilih="deskripsi"/>
<SPAN STYLE="font-style:italic">
<xsl:value-of select="calories"/> Hai
</SPAN>
</DIV>
</xsl:untuk setiap>
</xsl:template>
</xsl:lembar gaya>
Dokumen xml hanya berisi data murni. Jika perlu ditampilkan di halaman html, biasanya perlu menggunakan dokumen xsl yang disesuaikan untuk menguraikannya, atau membaca nilai dalam xml secara manual melalui js dan menampilkannya ke pohon dom di pohon dom. html. Saat menggunakan dokumen xsl Saat parsing, dokumen xsl yang sesuai harus ditentukan dalam dokumen xml yang sesuai untuk menampilkannya secara normal, namun ketika beberapa program secara dinamis mengeluarkan dokumen xml, dokumen xsl yang sesuai tidak ditentukan. dokumen xsl yang sesuai harus dimuat melalui cara lain. Untuk mengurai, tentu saja, ketika mengeluarkan dokumen XML di sisi server, itu juga dapat dicapai melalui beberapa API XML. Dengan cara ini, keterbatasan platform server dikesampingkan. Server hanya perlu mengeluarkan dokumen xml yang sesuai (.net/j2ee dapat diterima), dan mengeluarkan dokumen xsl yang sesuai ke klien (dapat mengeluarkan aliran atau secara langsung. di Klien memuat dokumen xsl).
Ada beberapa hal yang perlu diperhatikan di sini. Kami biasanya menggunakan komponen Msxml2.Document untuk memuat dokumen xml, tetapi ketika menggunakan xsl secara dinamis untuk mengurai dokumen xml, komponen thread gratis seperti Msxml2.FreeThreadedDOMDocument harus digunakan, dan MSXML2.XSLTemplate harus digunakan. digunakan. Komponen templat digunakan untuk memuat data xml dan xsl. Melalui metode transformasi MSXML2. Instal paket komponen msxml yang diperbarui dan tentukan nama baru, seperti Msxml2.FreeThreadedDOMDocument.4.0 dapat diunduh dari situs web M$.
Demo: http://www.21cz.cn/xmltest/test.htm
tampilan file xml: http://www.21cz.cn/xmltest/hello.xml
Lihat file xsl: http://www.21cz.cn/xmltest/hello.xsl