动态网页技术之一:HTML+XML+VBScript
studentinfo.html是前端工作文件,XML为后台数据库,脚本语言VBScript,可供学习HTML、XML、VBScript的朋友参考,拙作辛苦一天完成,欢迎转载,希望在此基础上扩充和提出改进意见!
用法:将后附三个文件studentinfo.html,studentinfo.xml,studentinfo.dtd粘贴拷贝到同一个文件夹下,双击就可以用IE打开studentinfo.html。
功能介绍:页面共分三个部分:
1、查询:在“请输入学号”编辑框中输入学号,单击“查询”,则性别、姓名、电子信箱显示在相应的编辑框中,如果点击“轮询”,则从上一次“查询”的下一个学号开始查询,连续单击“查询”,则可依次查询XML库中全部学生的信息。
2、显示和隐藏部分网页:单击“生成”按钮,则列表显示一个学生的信息,同时按钮上的文字变为“隐藏”,单击“隐藏”,列表信息消失,按钮文字变为“生成”,可以显示不同学生的信息,通过修改客户端源文件中调用过程3的实参来实现。
3、作者信息。
讨论:以上三个文件,全部在XMLSpy中编辑完成,已调试通过,在我的机器上如果不加DTD文件(也就是说在工作路径中没有DTD文件),会提示有不能识别的对象,即XML文件加载不成功,但道理上来讲,应该与DTD无关,实际上XML也确实没有引用DTD文件,原因何在,欢迎讨论。
附一:studentinfo.html
<html>
<head>
<title>studentinfo</title>
<style type="text/css">
<!--
.mystyle
{
background-color: #ffffff;
color=blue;font-size=18;
}
.yourstyle
{
background-color: #ffffff;
color=brown;font-size=18;display=block;
}
-->
</style>
<script type="text/vbscript">
<!--
sub sub1()
' Set doc = CreateObject("Microsoft.XMLDOM")
' doc.loadxml("studentinfo.xml")
studentID = editID.value
' msgbox "studentID:" & studentID
set root=data.documentelement
num = root.childnodes.length
for i = 0 to num - 1
set node = root.childnodes.item(i)
ID = node.childnodes.item(0).text
' msgbox ID
if studentID = ID then
editname.value = node.childnodes.item(1).text
sex.value = node.getattribute("sex")
email.value = node.childnodes.item(2).text
exit for
end if
next
'msgbox data.documentelement.childnodes.length
v2.value=1
end sub
sub sub2()
'studentID = v1.value
' msgbox "studentID:" & studentID
set root=data.documentelement
num = root.childnodes.length
if cint(v2.value) = 1 or cstr(editID.value) = "" or cint(editID.value) > num then
v1.value = cint(editID.value) + 1
end if
'v1.value = cint(v1.value)
'msgbox v1.value
if cint(v1.value) < 1 or cint(v1.value) > num then
' msgbox v1.value
v1.value = 1
end if
studentID = v1.value
for i = 0 to num - 1
set node = root.childnodes.item(i)
ID = node.childnodes.item(0).text
' msgbox ID
if studentID = ID then
editID.value = node.childnodes.item(0).text
editname.value = node.childnodes.item(1).text
sex.value = node.getattribute("sex")
email.value = node.childnodes.item(2).text
exit for
end if
next
v1.value = v1.value + 1
'msgbox data.documentelement.childnodes.length
v2.value = 0
end sub
sub sub3(index)
set root=data.documentelement
num = root.childnodes.length
for i = 0 to num - 1
set node = root.childnodes.item(i)
ID = node.childnodes.item(0).text
' msgbox ID
if cint(index) = cint(ID) then
inID = ID
inName = node.childnodes.item(1).text
inSex = node.getattribute("sex")
inEmail = node.childnodes.item(2).text
exit for
end if
next
inhtml = "<p align='center'><ul><li>学号:" + inID
inhtml = inhtml+"</li><li>姓名:" + inName
inhtml = inhtml+"</li><li>性别:" + Insex
inhtml = inhtml+"</li><li>邮箱:<span class = 'mystyle'>" + inEmail
inhtml = inhtml+"</span></li></ul></p>"
if cint(v3.value) = 1 then
str = inhtml
switch.value = " 隐 藏 "
v3.value = 0
else
str = ""
switch.value = " 生 成 "
v3.value = 1
end if
context.innerhtml = str
end sub
-->
</script>
</head>
<body>
<xml id="data" src="studentinfo.xml"></xml>
<p class="mystyle">hello!蝈蝈's friends!</p>
<p align="center">请输入学号:
<input type="text" size="5" name="editID" value="0"></input>
<input type="button" name="display1" value="查询" onclick='sub1()'></input>
<input type="button" name="display2" value="轮询" onclick='sub2()'></input>
<input type="hidden" name="v1" value="1"></input>
<input type="hidden" name="v2" value="1"></input></p>
<hr width="50%"></hr>
<p align="center">姓名:
<input type="text" size="10" name="editname"></input>
</p>
<p align="center">性别:
<input type="text" size="10" name="sex"></input>
</p>
<p align="center" class="yourstyle">电子邮箱:
<input type="text" size="20" name="email"
class="mystyle"></input>
</p>
<hr></hr>
<p align="left">
<input type="button" name="switch" value=" 生 成 " size="20" onclick='sub3("2")'></input></p>
<input type="hidden" name="v3" value="1"></input>
<span id="context"></span>
<hr></hr>
<p align="center"><font face="华文细黑" size="1">郭俸明 2008-1-12<br></br>北京市海淀区学院路40号<br></br>建议用IE5.0以上,800x600分辨率浏览</font></p>
</body>
</html>
附二:studentinfo.xml
<?xml version="1.0" encoding="GB2312" standal?>
<!--DOCTYPE studentinfo SYSTEM "studentinfo.dtd"-->
<studentinfo>
<student sex="male">
<ID>1</ID>
<name>张三</name>
<email>zhs@xml.net.cn</email>
</student>
<student sex="male">
<ID>2</ID>
<name>李四</name>
<email>ls@xml.net.cn</email>
</student>
<student sex="female">
<ID>3</ID>
<name>王五</name>
<email>ww@xml.net.cn</email>
</student>
<student sex="female">
<ID>4</ID>
<name>赵六</name>
<email>zhl@xml.net.cn</email>
</student>
<student sex="male">
<ID>5</ID>
<name>钱七</name>
<email>qq@xml.net.cn</email>
</student>
<student sex="female">
<ID>6</ID>
<name>孙八</name>
<email>sb@xml.net.cn</email>
</student>
</studentinfo>
附三:studentinfo.dtd
<?xml version="1.0" encoding="GB2312"?>
<!--DTD generated by XMLSpy v2006 U (
http://www.altova.com
)-->
<!ELEMENT studentinfo (student+)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT student (ID, name, email)>
<!ATTLIST student
sex CDATA #REQUIRED
>
注:studentinfo.dtd由XMLSpy自动生成