RT
---------------------------------------------------------------
1<html>
2<body>
3<xml id="abc">
4<?xml version="1.0" ?>
5<data>
6<fld>
7<name>John</name>
8<sex>male</sex>
9</fld>
10<fld>
11<name>Judy</name>
12<sex>female</sex>
13</fld>
14</data>
15</xml>
16<table datasrc="#abc">
17<tr>
18<td><div datafld="name" type="text"></div></td>
19<td><div datafld="sex" type="text"></div></td>
20</tr>
21</table>
22</body>
23</html>
---------------------------------------------------------------
test.htm
1<html>
2<head>
3<script>
4var sig=true
5function sort(strKey)
6{
7var xml1=mxhxml.XMLDocument
8var xsl1=mxhxsl.XMLDocument
9var s1=xsl1.selectSingleNode("//xsl:for-each/@order-by")
10if(s1.value==strKey) s1.value="-" + strKey
11else
12s1.value=strKey
13document.all.mxh.innerHTML=xml1.transformNode(xsl1)
14}
15</script>
16</head>
17<body onload="sort('Name')">
18<div id="mxh"></div>
19<xml id="mxhxsl">
20<?xml version="1.0"?>
21<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
22<xsl:template match="/">
23点击标题排序:
24<table border="2">
25<tr>
26<th onclick="sort('Name')" style="cursor:hand">名称</th>
27<th onclick="sort('Email')" style="cursor:hand">电子邮件</th>
28</tr>
29<xsl:for-each order-by="Name" select="/Custs/Cust">
30<tr>
31<td>
32<xsl:value-of select="Name"></xsl:value-of>
33</td>
34<td>
35<xsl:value-of select="Email"></xsl:value-of>
36</td>
37</tr>
38</xsl:for-each>
39</table>
40</xsl:template>
41</xsl:stylesheet>
42</xml>
43<xml id="mxhxml">
44<?xml version="1.0"?>
45<custs>
46<cust>
47<name>Nancy</name>
48<email>[email protected]</email>
49</cust>
50<cust>
51<name>Peter</name>
52<email>[email protected]</email>
53</cust>
54<cust>
55<name>Rachel</name>
56<email>[email protected]</email>
57</cust>
58<cust>
59<name>Seth</name>
60<email>[email protected]</email>
61</cust>
62<cust>
63<name>Tim</name>
64<email>[email protected]</email>
65</cust>
66</custs>
67</xml>
68
69\---------------------------------------------------------------
70
71<xml src="http://localhost/xxx.asp"></xml>
72\---------------------------------------------------------------
73
74http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmconxmldataislands.asp
75\---------------------------------------------------------------
76
77ASP+XML实现网页数据绑定
78
79一、数据绑定技术
80数据绑定技术可以使用在IE4.0以上版本的IE浏览器中,网页制作者可以灵活的改变页面风格而无需担心破坏数据显示代码,因为数据和页面是分离的,相关代码也很少。当数据更新时,只需要刷新中间显示数据的部分,而页面的其它部分不变,就好像没有刷新一样,显示效果更好;因为只下载了数据部分,网页的其它部分没有重复下载,浏览速度更快。如果灵活应用,还可以实现无刷新搜索和分页等功能。
81二、XML数据岛
82在HTML中,可以加入<xml>标签,从而在HTML嵌入XML格式的数据,或者引用外部的XML格式的文件。通过设置<xml>标签的ID属性,可以通过脚本访问这些数据,也可以把它与<table>捆绑到一起;也可以设置<xml>的SRC属性,导入外部的XML格式数据。
83例如,下面是一个新闻系统的XML示例:
841、内部嵌入
85<html>
86...
87<xml id="XMLData1">
88<?xml version="1.0" encoding="gb2312"?>
89<root>
90<news>
91<title>你好</title>
92<content>你好吗</content>
93<date>2002-2-23</date>
94</news>
95<news>
96<title>你好1</title>
97<content>哈哈哈</content>
98<date>2002-2-23</date>
99</news>
100<news>
101<title>大家好哇</title>
102<content>大家好哇1</content>
103<date>2002-2-23</date>
104</news>
105</root>
106</xml>
107...
108<html>
1092、外部文件
110<html>
111...
112<xml id="XMLData1" src="search.asp">
113</xml>
114...
115</html>
116三、<table>标签的属性设置
117<table>有一个DataSrc属性用于指定数据源。比如,有一个名为:XMLDS01的XML数据岛作为数据源,<table>的写法就是:
118<table datasrc="#XMLDS01">
119注意:要在引用的数据源名称前加#号。
120规范的<table>有三个部分:<thead>、<tbody>、<tfoot>。在数据捆绑技术中,通常把表头和表尾分别写在<thead>和<tfoot>中,在其中写一些表格标题之类的文字。而<tbody>可以对数据源提供的数据做循环显示。但是,<td>标签不能和数据源捆绑在一起,所以需要在<td>里加一个可捆绑的<div>标签作为数据的容器。例如,前面新闻系统数据捆绑的代码如下:
121<table datasrc="#XMLDS01" name="tbNews">
122<thead>
123<tr>
124<td>新闻标题</td>
125<td>内容提示</td>
126<td>日期</td>
127</tr>
128</thead>
129<tbody>
130<tr>
131<td>
132<div datafld="title"></div>
133</td>
134<td>
135<div datafld="content"></div>
136</td>
137<td>
138<div datafld="date"></div>
139</td>
140</tr>
141</tbody>
142</table>
143
144四、数据源的实现
145上面的代码将一个HTML表格与一个名为XMLDS01的数据源绑定在一起。上面已经提到,XML数据岛引用的外部文件只要在格式上符合XML标准即可,扩展名不一定需要是.XML。所以,我们可以通过ASP产生XML格式的输出,然后通过HTML的<xml>标签与表格捆绑在一起:
146<xml id="XMLData1" src="search.asp"></xml>
147注意:XML的标签是区分大小写的!并且所有的标签都需要关闭,输出时一定要注意匹配;ASP默认的Content-Type是text/html,在这里需要通过Response.ContentType="text/xml"来设置一下,使浏览器把输出结果当xml处理。
148示例代码:
149在后台提供数据的search.asp文件:
dbstr="Driver={Microsoft Access Driver (*.mdb)};DBQ="&server.mappath("basicnews.mdb")
set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = dbstr
rs.Source = "SELECT * from tblNews1"
rs.CursorType = 0
rs.CursorLocation = 2
rs.LockType = 3
rs.Open()
szXml="<?xml version=""1.0"" encoding=""gb2312""?><root>"
do while not rs.eof
szXml=szXml&"<news>"
szXml=szXml&"<title>"&rs("Title")&"</title>"
szXml=szXml&"<content>"&rs("content")&"</content>"
szXml=szXml&"<date>"&rs("CreaDate")&"</date>"
szXml=szXml&"</news>"
rs.movenext
loop
szXml=szXml&"</root>"
response.ContentType="text/xml"
response.write szXml
set rs=nothing
1在前台设置数据显示样式的list.html文件:
2<html>
3<head>
4<title> New Document </title>
5</head>
6<body>
7<xml id="XMLDS01" src="search.asp"></xml>
8<table datasrc="#XMLDS01" name="tbNews">
9<thead>
10<tr>
11<td>新闻标题</td>
12<td>内容提示</td>
13<td>日期</td>
14</tr>
15</thead> <tbody>
16<tr>
17<td>
18<div datafld="title"></div>
19</td>
20<td>
21<div datafld="content"></div>
22</td>
23<td>
24<div datafld="date"></div>
25</td>
26</tr>
27</tbody>
28</table>
29</body>
30</html>
31以上代码通过修改,可以实现搜索功能,只要传递搜索参数给search.asp文件,使asp文件只输出搜索后的数据。</xml></div></td></td></tbody></tfoot></thead></tfoot></tbody></thead></table></table></table></table></table></html></html></xml></table></xml></xml></body></html>