XML期末考试试题,复习题修正版
2011-2012学年期末考试考试题
一、填空题(每题3分,共27分)请将每道题的正确答案填写在题目中的横线上,其余答题
方式均无效。
1、下面代码中的“学生信息”是____根____元素;
2、match=“/”语句的含义是____从XML里选取满足条件的根结点________;
3、能够通过DTD验证的XML文档我们称为___xml模式___的文档;
4、XML文档中下条语句的作用是:_____为xml文档导入样式单_______;
在DTD的个数限制中常使用的符号是:_*_、__+__和__?_;
5、
在DTD文档中下面语句的作用是______对教师的元素声明_________;
在DTD文档中下面语句的作用是_____pic1是引用外部实体“fi1.jpg”__________;
6、声明语句的作用是_对姓名元素的属性声明;
二、选择题(每题2分,共20分)下列各题选项中,只有一个选项是正确的,请将正确选项的标号填写在题目后面的横线上,其余答题方式均无效。
1、声明语句的作用是(B)
A、声明元素student的属性studentID是可有可无的;
B、声明元素student的属性studentID是唯一标识类型,可以省略;
C、声明元素student的属性studentID是默认取值,可以省略;
D、声明元素student的属性studentID是唯一标识类型,不可省略;
2、在XML文档的第一条声明语句中,不能使用的属性是(D)
A、version
B、encoding
C、standalone
D、name
3、不符合格式良好的XML文档要求的是(A)
A、文档可以有一个以上的根元素;
B、有符合规范的声明语句;
C、每个元素有正确的起始、结束标记;
D、元素正确嵌套,没有交叉现象出现;
4、在进行属性声明时,错误的是(B)
A标记中可以使用多个属性
B属性可以出现在起始标记或结束标记中;
C属性名是大小写敏感的;
D、属性值必须用引号引上;
5、一个XML文档如果符合它的XMLSchema文档的定义,称它为(A)
A、结构良好的XML文档
B、有效的XML文档
6、XML文档中语句中SYSTEM的作用是(C)
A、指定运行的操作系统
B、打开系统文件
C、连接外部DTD文件
7、以下不属于XML语法规定的是(B)
A、元素必须正确嵌套
B、标记任意大小写
C、所有的属性值必须放在双引号或单引号中;
D、若文档没有DTD,属性值的默认类型是“CDATA”;
8、声明语句指明元素学生信息是(B)
A、任意子元素组成;
B、由子元素“地址”“成绩”和字符数据混合组成;
C、由字符“地址,成绩”和字符“#PCDATA”组成;
D、由文本类数据组成
9、XMLSchema文档中语句:
中属性type的作用是(D)
A、指定子元素的属性;
B、指定子元素的数据类型;
C、指定子元素是引用元素声明中name属性值为name的元素;
D、指定子元素名称;
10、下面标记中,非法的XML标记名称是(D)
A、
B、
C、
D、
三、改错题。下列代码是否正确?若不正确,为什么?(6分×4)
1、(标记的大小写不统一)
<学生>
<学号>941003学号>
学生>
2、(缺少根元素)
3、()
4、(缺少xml的声明语句)
<学生信息>
学生信息>
四、根据下面内部DTD文档,完成后继的xml文档。(15分)
]>
<教师资料>
<教师_inf>
<教师>
<姓名>张三峰姓名>
<年龄>25年龄>
<性别>男性别>
<专业>广告专业>
<电话>65455555电话>
教师>
<配偶>
<姓名>小小姓名>
<性别>女性别>
配偶>
教师_inf>
教师资料>
五、写出用于验证下面XML文档的XMLSchema文档(14分)。
xmlns="urn:schemas–microsoft-com:xml-date" xmlns="urn:schemas-micorosoft-com:datatypes">
复习题
1.什么是XML?XML的特点有哪些?
答案:
XML(eXtensibleMarkupLanguage,可扩展标记语言),是由万维网联盟(WorldWideWeb Consortium,W3C)定义的一种数据交换的规范,是Web上的数据通用语言,使用一系列简单的标记描述数据。
XML的特点有:
(1)XML是一种简单、与平台无关并被广泛采用的标准,可用于Internet上的各种应用。(2)XML兼容SGML,所以多数SGML应用可转化为XML。
(3)XML文件同HTML文件一样易于创建。
(4)XML文件内容、结构简单,可以更加灵活地进行编程,减少了服务器的工作量。
(5)XML文件结构严谨,可以轻松被计算机程序解析。
(6)XML相对于HTML的优点是它将用户界面与结构化数据分隔开来。这种数据与显示的分离使得集成来自不同源的数据成为可能。
2.简述XML与HTML的区别。
答案:
(1)HTML语言是用来格式化web数据的语言,有固定的标记,每一个标记都有其固定的用法。XML允许自定义标记,用户可以自己定义标记来描述自己领域的信息。
(2)HTML的语法也相当宽松,标记不一定要配对使用,名称不区分大小写。XML语言有其严格的语法规则,标记必须成对使用,严格区分名称的大小写。
(3)不能够很好的描述数据的结构,本质上是一种格式显示语言。XML语言的特点就是将信息的内容和它们的显示样式区分开来,焦点是数据的内容。
3.简述XML解析器的种类及解析步骤。
答案:
XML的解析器分成两大类:综合的解析器和专用的解析器。综合的解析器又分为:基于DOM的解析器和基于事件的解析器。
基于DOM的解析器解析XML文件的一般步骤如下:
(1)扫描命令行得到XML文件名;
(2)创建一个解析器对象;
(3)告诉解析器解析命令行中给定的XML文件;
(4)遍历DOM结果树向标准输出打印;
基于SAX的解析器解析XML文件的一般步骤如下:
(1)创建一个事件处理程序。
(2)创建SAX解析器。
(3)向解析器分配事件处理程序。
(4)解析文档,同时向事件处理程序发送每个事件。
1.XML声明中有哪些属性?都有什么作用?
答案:
XML声明中包含3个属性:version、encoding和standalone。它们的作用分别是:
version属性:指出该XML文件使用的XML版本,目前取值只有1.0。
encoding属性:该属性规定了该XML文件采用编码的字集。取值有:UTF-8、GB2312、ISO-8859-1等。
Standalone属性:声明XML的独立性,即是否与其他文件相关联。取值有yes和no。
5.下面的XML文件中有哪些错误?改正之后用IE验证。
1.2
1.8
答案:
有5处错误:注释位置不正确;声明中xml前不能有空格;版本号应为1.0;
1.什么是有效的XML文件?IE能否检查一个XML文件的有效性?
答案:
符合XML语法规则的XML文件称为规范的XML文件,规范的XML文件再满足其关联的DTD或Schema文件中的约束,这样的XML文件就称为有效的XML文件。
IE不能检查一个XML文件是否是有效的,只能检查XML文件的规范性。要检查一个XML文件的有效性,需通过DOM或SAX解析器。
2.如何将DTD关联到XML文件?
答案:
通过文档类型声明来关联DTD和XML。格式为:
SYSTEM用于非标准化的外部DTD,PUBLIC用于标准化的外部DTD。
5.下面的文件正确吗?为什么?用IE和本章中的解析器验证你的结论。
mes.dtd
fireCDATA#FIXED"119"
policeCDATA#FIXED"110"
hospitalCDATA#FIXED"120"
>
mes.xml
答案:
不正确。有5处错误,“”句“#PCDAT”A与“tel”之间应该用“|”,或去掉“#PCDAT”A;参数实体应先声明后使用;文档类型声明缺少根元素;“name”的“sex”属性取值错误;“emergency”的“fire”属性取值错误。正确的文件:
mes.dtd
fireCDATA#FIXED"119"
policeCDATA#FIXED"110"
hospitalCDATA#FIXED"120"
>
mes.xml
XML文件如何调用CSS样式?
答案:
XML文件调用CSS有3中形式:引用一个外部CSS文件、将CSS语句嵌入到XML文件、同时应用内部CSS和外部CSS。
XML文件调用独立的CSS文件的方法是在XML文件中加入下面一条处理指令:
调用内部的CSS通过名称空间的方法引入HTML的style标记:
CSS代码
在XML文件中同时加入上面两段代码就是同时应用内部CSS和外部CSS。
2.如果有一个标记“
答案:
name{
display:block;
font-family:楷体;
font-size:20pt;
color:blue;
background-color:yellow;
}
图5-17
4.为下面的XML文件添加CSS样式,使之显示的效果如图5-18所示。
图5-17
答案:
book{
display:block;
width:400;
border-style:double;
border-right:none;
border-bottom:none;
border-left:none;
}
title{
display:list-item;
text-align:center;
font-size:15;
padding-top:5;
font-weight:bolder;
}
author{
display:block;
list-style-type:square;
font-size:13;
font-style:italic;
font-weight:bold; background-color:yellow;
}
price{
display:line;
text-align:center;
position:relative;
top:-30;
left:350;
}
discretion{
display:block;
width:300;
text-indent:25;
line-height:2;
}
#xiyou{
display:block;
width:70;
height:100;
background:url(xiyou.bmp); float:right;
}
#honglou{
display:block;
width:70;
height:100;
background:url(honglou.bmp); float:right;
}
1.XSL与CSS有哪些不同之处?
答案:
XSL和CSS都可以格式化XML。它们之间主要有以下不同之处:
(1)CSS有局限性。CSS没有办法让XML文件中的同一个数据多次在页面上显示出来,而XSL 却能做到这一点。这是因为它们的需找数据的机理是不同的,CSS技术的显示机理是从头到
尾一次扫描XML文件,遇到匹配的标记,就以当前的样式显示。XSL则是通过路径的方式来
定位数据,从而可以轻易地提取出特定的数据。
(2)CSS语法简单。CSS只是通过选择符和属性列表来定义数据的样式,XSL则提供了循环、条件、选择等控制语句。从这方面讲,XSL更接近于程序设计语言,可以和其他语言进行数
据交互,较CSS有本质上的区别。
(3)从语法上讲,XSL是一种特殊的XML文件。因此,XSl必须满足XML规范。CSS则是具
有其自身语法的语言。
2.一个XSL文件的基本结构是什么?
答案:
XSL文件是一个特殊的XML文件,所以,XSL的文件结构必须满足XML规范,一个XSL样式文件也必须有XML声明。编码必须和其关联的XML文件编码一致。XSL样式文件的根标记必须
是“stylesheet”,必须包含版本声明。使用的名称空间是https://www.360docs.net/doc/a89752570.html,/TR/WD-xsl。还应该包含根模板。一个XSL样式文件的最基本的结构应该如下代码所示:
内容描述
1.什么是数据岛?为什么要引用数据岛?如何声明一个数据岛?
答案:
数据岛是指存在于HTML页面中的XML代码,作为HTML页面数据的来源。
通过数据岛这种技术,实现了页面范围内数据和显示的分离。可以提高数据的共享性,方便数据的维护;可以提高程序的扩展性和代码的重用性。
声明数据岛通过标记
2.如何实现HTML对象和数据岛的绑定并取出需要的数据?
答案:
在HTML中实现对象和数据岛绑定通过对象的“datasrc”属性实现,属性的值为“#”加上数据岛的名称。
从数据岛中取数据的方法是通过HTML对象的“datafld”属性实现,吧需要的数据的标记名称做为“datafld”属性的值。
3.通过记录集管理数据岛都有哪些方法?
答案:
通过记录集管理数据岛,包括取记录、遍历记录、插入和删除记录、对记录集分页和把记录
集转换为数组。
取记录有如下方法:
rs(‘标记名称’)
rs(标记的编号)
rs.Fields(‘标记名称’)
rs.Fields(标记的编号)
rs.Fields.Item(‘标记名称’)
rs.Fields.Item(标记的编号)
遍历记录有如下方法:
moveNex()方法:当前记录移动到下一条记录。
movePrevious()方法:当前记录移动到上一条记录。
moveFirst()方法:当前记录移动到第一条记录。
moveLast()方法:当前记录移动到最后一条记录。
moveNumRecords()方法:当前记录向前或向后移动到指定数目的记录。
插入和删除记录的方法包括:
Addnew()方法:添加新纪录
Delete()方法:删除记录
对记录集分页通过设置如下属性实现:
AbsolutePage属性,用于指定当前的页。
PageCount属性,返回记录集中的逻辑页数。
PageSize属性,用于指定每个逻辑页所包含的记录数,默认值是10。
把记录集转换为数组通过getrows()方法实现。
5.编写HTML代码,以下面的XML文件为数据源对象,显示的结果如图7-16所示。功能要求:(1)分页显示数据。
(2)点击“首页”、“上一页”、“下一页”或“尾页”按钮进行相应页的跳转。
(3)在文本框中输入页码,点击“确定”按钮可以跳到相应的页。
图7-16程序运行结果
所需的XML文件代码如下:
答案:
部分国家电话直拨区号表
第
转到第
varrs=students.recordset;
rs.pagesize=3;
functionfirstpage(){
rs.absolutepage=1;
disp();
}
functionpreviouspage(){
if(rs.absolutepage==1){
alert("已经是第一页!");
}else{
rs.absolutepage=rs.absolutepage-1;
disp();
}
}
functionnextpage(){
if(rs.absolutepage==rs.pagecount){
alert("已经是最后一页!");
}else{
rs.absolutepage=rs.absolutepage+1;
disp();
}
}
functionlastpage(){
rs.absolutepage=rs.pagecount;
disp();
}
functiongotopage(pagenum){
if(pagenum>=1&&pagenum<=rs.pagecount){
rs.absolutepage=pagenum;
disp();
}else{
alert("输入的页码错误!");
}
}
functiondisp(){
stu_tab="";
stu_tab="
align='center'>"+rs(0)+" | ";
s_t.innerHTML=stu_tab;
cpage.innerHTML=rs.absolutepage;
tpage.innerHTML=rs.pagecount;
}
disp()
DOM接口中的Document节点有哪两个子节点?分别代表什么意义?
答案:
Document类型节点的两个子节类型点是DocumentType类型和Element类型。DocumentType类型节点对应XML文件所关联的DTD文件,通过DocumentType节点的子孙关系可以分析并获得XML文件所关联的DTD文件中的数据。
Element类型节点对应XML文件的标记节点,通过Element节点的子孙关系可以获得XML文件中的数据,Element节点的子节点有Element节点、Text节点和CDATASection节点。2.Attr节点是Element节点的子节点吗?
答案:
不是。
在XML文件中,属性是标记信息的补充描述,不是标记的子标记。所以,在DOM中Attr对象是包含在Element对象中的,不是Element节点的子节点。要获得Element节点的Attr节点需要Element节点调用getAttribute()方法,该方法返回一个NamedNodeMap对象,NamedNodeMa对p象由节点组成,这些节点可以转换为Attr节点。
3.有如下XML代码段:
可以通过哪些方法获得标记
答案:
第一种方法:获得Element节点“element”,通过Node接口的getTextContent()方法获得“element”节点的文本数据。
第二种方法:获得Element节点“element”的子节点,即Text类型节点,通过Text 节点的getWholeText()方法获得文本数据。
4.编写Java程序,解析如下的XML文件,要求输出的结果如图8-12所示。
小李
小张
小赵
图8-12程序运行结果
答案:
importorg.w3c.dom.*;
importjavax.xml.parsers.*;
publicclassxiti4{
publicstaticvoidmain(String[]args){
intn=0;
floatmathscore=0;
floatenglishscore=0;
floattotalmath=0;
floattotaleng=0;
try{
DocumentBuilderFactoryfactory=
DocumentBuilderFactory.newInstance();
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdocument=builder.parse("xiti4.xml");
System.out.println("=====成绩单=====");
NodeListnodeList=document.getElementsByTagName("name");
for(inti=0;i Nodenode=nodeList.item(i); NodeListcNodeList=node.getChildNodes(); System.out.print(cNodeList.item(0).getTextContent()); for(intj=0;j NodecNode=cNodeList.item(j); if(cNode.getNodeType()==Node.ELEMENT_NODE){ StringnodeName=cNode.getNodeName(); if(nodeName=="math"){ System.out.print(nodeName+":"); mathscore= Float.parseFloat(cNode.getTextContent()); totalmath+=mathscore; System.out.println(mathscore); } if(nodeName=="english"){ System.out.print(nodeName+":"); englishscore= Float.parseFloat(cNode.getTextContent()); totaleng+=englishscore; System.out.println(englishscore); n++; System.out.println("总分: "+(mathscore+englishscore)); } } } } System.out.println("=====平均分====="); System.out.println("math:"+(totalmath/n)); System.out.println("english:"+(totaleng/n)); }catch(Exceptione){ e.printStackTrace(); } } }