xml复习资料要点.docx
《xml复习资料要点.docx》由会员分享,可在线阅读,更多相关《xml复习资料要点.docx(24页珍藏版)》请在冰豆网上搜索。
xml复习资料要点
1.XML是()。
A.一种标准泛用标记语言 B.一种扩展性标识语言
C.一种超文本标记语言D.一种层叠样式表单
2.对XML进行验证的前提条件是()。
A.该XML文档的数据模型是完整的 B.该XML文档的定义是正确的
C.该XML文档的数据是正确的 D.该XML文档的格式是正确的
3.为定义一个XML文档的结构,开发者可以使用的XML技术有()。
A.UMLB.DTDC.NamespaceD.XSL
4.下面哪个公司或组织制定了XML()。
A.ISOB.OracleC.W3CD.Microsoft
5.下列哪项不是标记语言()。
A.SQLB.HTMLC.SGMLD.XML
6.下列哪项可以显示XML文档中的数据()。
A.XSLB.SchemaC.XSDD.XML
7.在XML文档的第一条声明语句中,能使用的属性是()。
A.xsdB.htmlC.xslD.version
8.下面()对schema中简单元素的描述是不正确的。
A.不能拥有属性定义B.不能拥有子元素定义
C.”unbounded”属性值表明可出现1次D.可以有自定义数据类型
9.下列()是规范的XML元素?
A.booklistB.3classC.BookCaseD.?
xml
10.在DTD声明中使用()符号可以使子元素任意调换顺序。
A.?
B.*C.|D.+
11.下面关于DTD的描述()是不正确的。
A.DTD声明语法与XML语法相同B.DTD声明是以DOCTYPE开始
C.DTD声明中可以有SYSTEM关键字D.DTD文件的扩展名为“.dtd”
12.以下()是使用参数实体的正确方法。
A.&RefEntity;B.%RefEntity;C.@RefEntity;D.!
RefEntity;
13.以下Schema中()元素可以加入属性。
A.简单类型B.复杂类型C.纯元素类型D.对象类型
14.下列()是XSL根元素。
A.xsl:
outputB.xsl:
stylesheetC.documentElementD.HTML
15.XSLT要为转换后的文档添加属性,应使用下列()元素。
A.xsl:
elementB.xsl:
attributeC.xsl:
value-ofD.xsl:
comment
16.在DTD声明中使用()符号可以使子元素为任意内容及任意顺序。
A.?
B.*C.|D.ANY
17.在Schema声明自定义数据类型的枚举类型时要使用()子元素。
A.restrictionB.patternC.listD.enumeration
18.下列()不是XML逻辑结构的文档头部分。
A.序言B.元素及属性C.DTD声明D.PI指令
19.XML的逻辑结构是()。
A.星状结构B.线状结构C.树状结构D.网状结构
20.以下()不是XML文档编辑工具。
A.windows记事本B.XMLSPY2006C.XercesD.word2003
21.下面不是XML语言的特点。
A.自我描述B.可扩展C.跨平台D.修饰数据
22.对表格的两行进行行合并,需用标记。
A.rowspanB.clospanC.cellpaddingD.table
23.在XML文件中可以作为元素类型和属性名使用的是。
A.命名空间B.处理指令C.标记D.URI
24.下面特性中,不属于元素的特性的是。
A.可扩展性B.关联性C.描述性D.迥异性
25.元素内容类型中,关键字表示元素只包含被解析的字符数据。
A.#PCDATAB.子元素C.CDATAD.实体
26.元素指示符+表示元素可以出现的次数为。
A.≥1B.≥0C.0D.1
27.使用可以将一个DTD元素及属性声明嵌套在另一个DTD中。
A.内部参数实体B.外部参数实体
C.内部普通实体D.外部普通实体
28.通过可以告诉解析器如何来显示未解析实体。
A.注记B.条件语句C.实体D.属性
29.W3CXMLSchema文档中可以直接将其指向另一个元素定义模块,避免在文档中多次定义同一元素的元素属性是。
A.abstractB.formC.refD.block
30.CSS的样式表中字体的属性中用来修饰字体的对比度和亮度。
A.font-familyB.font-styleC.font-weightD.font-variant
31.设置XML元素的文本缩进量的是属性。
A.text-alignB.text-indentC.line-heightD.letter-spacing
32.下面比较运算符的含义为不等于。
A.$ne$B.$qe$C.$gt$D.$lt$
33.下面哪个符号不是在XSL中使用的通配符?
A.*B.[]C.//D.?
34.下面不是XSL语言的功能。
A.把XML转换为HTML
B.格式化输出对象
C.定义XML模式
D.链接不同的XML文档
35.Document接口实现的对象对应XML文件Document节点,该节点下面有两种类型的节点:
Element节点、。
A.DocumentType节点B.Attr节点
C.Node节点D.Text节点
36.当解析器解析到文档中命名空间,会调用方法。
A.publicvoidstartPrefixMapping()
B.publicvoidstartDocument()
C.publicvoidsetDocumentLocator()
D.publicvoidcharacters()
37.如果获取XML文档中某一行的数据,需调用方法。
A.publicvoidsetDocumentLocator()
B.publicvoidunparsedEntityDecl()
C.publicvoidfatalError()
D.publicvoidstartDocument()
38.XLink属性show的属性值表示内容嵌入源文档的链接位置。
A.newB.embedC.replaceD.in
39.下面不是DSO数据源对象的属性。
A.EOFB.maxRecordsC.idD.pageCount
40.“transformNode(stylesheet)”这个方法表示意思。
A.以参数指定的样式显示XML数据
B.把XML的节点转换为XML数据
C.把该Element节点转换为Node节点
D.把XML数据转换为HTML数据
1.完成下列表格,简述DOM与SAX的区别。
比
较
DOM
SAX
速
度
需要一次性装入整份XML文档,并将XML文档转换为DOM树,因此速度比较慢
顺序解析XML文档,无须一次装入整份XML文档,因此速度很快
重复访问
将XML文档转换成DOM树之后,整个解析阶段DOM常驻内存,非常适合重复访问,效率很好
顺序解析XML文档,不保存已访问的数据,因此不适合重复访问。
如果需要重复访问数据,则需要再次解析XML文档
内存要求
整个解析阶段DOM树常驻内存,对内存的要求高,内存占用率大
不保存已访问数据,对内存几乎没有要求,内存占用率低
修
改
既可读取节点内容,也可修改节点内容
既可读取节点内容,无法可修改节点内容
复
杂
度
完全采用面向对象的编程思维进行解析,整份XML文档转换为DOM树之后,以面向对象的方式来操作各Node对象即可
采用事件机制思维进行编程,SAX解析器只负责触发事件,程序负责监听所有事件,并通过事件获取XML文档中的信息
2.简述什么是XML?
XML的主要特点是什么?
XML的作用是什么?
答:
(1)XML是eXtensibleMarkupLanguage的缩写,即可扩展标记语言。
(2)XML有两大特点:
一是良好的可扩展性,它允许用户根据自己的特殊需要制定出适用于自身的标记和文档结构,以便于结构化地描述自己领域的信息,从而提供一种处理数据的最佳方式;二是XML数据内容与显示样式的分离,使用户可通过使用不同的样式表和应用程序,根据需要显示和处理数据。
(3)XML的作用,一是作为元标记语言,定义各种实例标记语言标准;二是作为数据标准描述和交换语言,作为存储数据和交换数据的工具。
3.简述元素的命名规则。
答:
(1)英文名称必须以英文字母或者下划线“_”开头,中文名称可以以汉字或者下划线“_”开头。
(2)在使用默认编码集的情况下,名称可以由英文字母、数字、下划线“_”、连接符“-”和句点“.”构成。
(3)在指定了编码集的情况下,则名称中除上述字符外,还可以出现该字符集中的合法字符。
(4)元素名称中不能含有空格。
(5)元素名称中的英文字母大小写是敏感的。
例如,、与是三个不同的标记。
4.说明DTD中属性声明方法及属性默认值的含义。
答:
(1)英文名称必须以英文字母或者下划线“_”开头,中文名称可以以汉字或者下划线“_”开头。
(2)在使用默认编码集的情况下,名称可以由英文字母、数字、下划线“_”、连接符“-”和句点“.”构成。
(3)在指定了编码集的情况下,则名称中除上述字符外,还可以出现该字符集中的合法字符。
(4)元素名称中不能含有空格。
(5)元素名称中的英文字母大小写是敏感的。
例如,、与是三个不同的标记。
5、简述Schema和DTD的区别?
答:
(1)XMLSchema使用XML语法:
Schema文档是一个符合XML规范的特殊的XML文档,避免读者再去重新学习一套的语法负担;而DTD本身并不是标记语言,因此给掌握和使用它带来额外的负担。
(2)支持多种数据类型,Schema支持int、float、Boolean、date等一系列的数据类型,还允许编程人员根据需要自定义数据类型。
而DTD只能把XML的内容定义为一个字符串,无法满足文档的可理解性和数据交换的需要。
(3)支持名称空间机制,Schema采用名称空间的机制,使得一个XML文档可以调用多个Schema文档,在代码的重用性和扩展性方面要远远优于DTD。
(4)可扩展性,作为XML的一个应用,Schema理所当然的继承了XML的自描述性和可扩展性,用户可以依据要求修改已经存在的模式而不必每人都从头写起。
(5)对内容模型的有力支持,Schema可以验证混合内容的有效性,指定元素出现的确切次数,为元素组命名等。
而DTD的内容模型是很弱的,只允许我们限制文档的次序或者选择列表,而不能用来验证混合内容模型等能力。
6.使用DSO技术显示XML文档中的数据,需要哪些必要的步骤?
答:
第一步:
绑定XML文档到HTML文档。
这个步骤是通过在HTML文档中一个特定标记建立HTML和XML文档之间的链接。
第二步:
绑定XML元素到HTML标记。
被绑定的HTML标记可以自动显示XML内容。
7.简述sequence,all,choice三个元素的作用和使用方法。
答:
(1)sequence组用来表示这个组中的子元素在XML实例中应该出现的顺序,它是通过sequence元素来完成的。
(2)all组(使用all元素)用来表示其组中的所有子元素在XML实例中可以以任何次序出现,并且每个子元素只能出现一次。
在使用all组时需要遵循下列规则:
①all组只能出现在任何内容模型的顶层,不能出现在其他模型组中。
②all组只能包含元素声明和引用,而不能包含其他组。
对于它所包含的子元素,maxOccurs必须为1,minOccurs只可以为0或1。
③all元素本身不能出现多次。
④在all组中声明的子元素只能在all组中使用,在文挡其他任何地方都不能出现。
(3)在choice模型组(使用choice元素)中声明的子元素集中,必须有且只有一个元素出现在相应的XML实例中。
8.简述XML相关的技术。
(1)用于规范和验证XML文档的DTD或XMLSchema技术
(2)解决标记重名的名称空间技术
(3)用于格式化显示XML文档的CSS和XSL样式表技术
(4)用于访问XML文档的DOM和SAX技术
(5)XML的超链接理论——Xpath、Xlink和Xpointer技术
9.简述格式良好和有效的XML文档。
(1)格式良好的XML文档必须遵守如下规则:
①XML文档的第一行必须是声明,用以指明该文档是XML文档以及它所使用的XML规范版本。
在文档声明的前面不能够再有任何其它元素或者注释等信息。
②所有元素构成一棵层次树,在一个XML文档中有且只有一个根元素。
③起始标记都有匹配的结束标记(空元素标记除外)。
④元素可以正确地嵌套,但不能交叉。
⑤元素名称、属性名称以及指令名称的大小写敏感。
⑥一个元素不能有两个同名的属性,且属性值必须用(')或(")括起来。
⑦特殊字符必须被正确地转义。
(2)如果一个格式良好的XML文档能够满足某些进一步有效性约束和匹配文档内容的语法,那么这个文档就被称为是有效的XML文档。
这就是说,一个有效的XML文档不仅是格式良好的,而且要对所使用的标记和文档结构进行明确的定义。
10.什么是DOM?
DOM的工作机制是什么?
答:
(1)DOM是DocumentObjectModel的缩写,即文档对象模型,是W3C组织推荐的处理XML的标准接口,定义了所有文档元素的对象和属性,以及访问它们的方法(接口)。
(2)DOM把XML文档表示为节点(node)对象树。
一个XML分析器,在对XML文档进行分析之后,不管这个文档有多简单或多复杂,其中的信息都会被转化成一颗节点对象树。
(3分)在这棵节点对象树中,有一个根节点—Document节点,所有其他的节点都是根节点的后代节点。
节点对象树生成之后,就可以通过DOM接口访问、修改、添加、删除、创建树中的节点和内容。
11.什么是复杂类型元素?
如何定义一个复杂类型?
答:
(1)复杂类型是由简单类型组合出的集合。
复杂类型元素指拥有子元素或属性的元素。
复杂类型定义用于指定由元素和属性组成的内容模型。
(2)命名复杂类型定义的一般语法如下:
complexTypename="复杂类型名称">
sequence>
elementname="子元素名称"type="数据类型"/>
……
sequence>
attributename="属性名称"type="数据类型"/>
complexType>
12.什么是空元素?
如何声明空元素
答:
(1)空元素是指没有任何数据内容的元素,即在开始标记和结束标记之间既没有数据内容也没有子元素。
(2)<元素名>元素名>或者<元素名/>
13.编制一份反映大型超市当天商品销售记录信息的xml文档。
要求:
(1)超市日常销售作为根元素
(2)二级子元素有:
超市名称,经理姓名,专柜,商品销售记录。
(3)专柜名称,负责人,营业员作为专柜的子元素。
(4)商品销售记录有子元素:
记录(1条)。
(5)商品条码,商品名称,商品分类,销售数量,销售日期时间,折扣,销售额,经办人作为记录的子元素。
元素内容如下:
元素名称
元素内容
超市名称
中环之家
经理姓名
张勇
专柜名称
奶制品
负责人
李明
营业员
王红
一条记录如下:
序号
商品条码
商品名称
商品分类
销售数量
销售日期时间
折扣
销售额
经办人
1
2014111
蒙牛酸酸乳
乳酸菌饮品
500
20140222
0.9
5000
李华
xmlversion="1.0"encoding="UTF-8"?
>
<超市日常销售>
<超市名称>中环之家超市名称>
<经理姓名>张勇经理姓名>
<专柜>
<专柜名称>奶制品专柜名称>
<负责人>李明负责人>
<营业员>王红营业员>
专柜>
<商品销售记录>
<记录>
<商品条码>2014111商品条码>
<商品名称>蒙牛酸酸乳商品名称>
<商品分类>乳酸菌饮品商品分类>
<销售数量>500销售数量>
<销售日期时间>20140222销售日期时间>
<折扣>0.9折扣>
<销售额>5000销售额>
<经办人>李华经办人>
记录>
商品销售记录>
超市日常销售>
14.根据要求写schema文档。
xmlversion="1.0"encoding="gb2312"?
>
<印数>5000印数>
现在要求为它定义一个名称为prodnumType的数据类型,它是在整数类型的基础上定义一个取值范围在0~10000之间的正整数类型。
xmlversion="1.0"encoding="UTF-8"standalone="yes"?
>
schemaxmlns:
xs="http:
//www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
elementname="印数"type="prodnumType"/>
simpleTypename="prodnumType">
restrictionbase="xs:
integer">
minInclusivevalue="0"/>
maxInclusivevalue="10000"/>
restriction>
simpleType>
schema>
15.现有一个XML文档Example1.xml,清单如下:
xmlversion="1.0"encoding="GB2312"?
>
<员工名单>
<员工>
<姓名>黄胜霞姓名>
<岗位>前台接待岗位>
员工>
员工名单>
Example1.java文件如下:
importjavax.xml.parsers.*;
importorg.xml.sax.helpers.*;
importorg.xml.sax.*;
importjava.io.*;
publicclassExample1{
publicstaticvoidmain(Stringargs[]){
try{
SAXParserFactoryfactory=SAXParserFactory.newInstance();
SAXParsersaxParser=factory.newSAXParser();//创建SAX解析器
MyHandlerhandler=newMyHandler();//创建事件处理器
saxParser.parse(newFile("Example1.xml"),handler);//绑定文件和事件处理者
System.out.println("该XML文件共有"+handler.count+"标记");
}
catch(Exceptione)
{System.out.println(e);}
}
}
classMyHandlerextendsDefaultHandler{
intcount=0;
publicvoidstartDocument(){//解析到文档开始时调用该方法
System.out.println("开始解析XML文件");
count++;
}
publicvoidendDocument(){//解析到文档结束时调用该方法
System.out.println("解析文件结束");
count++;
}
publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesatts){//解析到标记开始时调用该方法
System.out.println("<"+qName+">");
count++;
}
publicvoidendElement(Stringuri,StringlocalName,StringqName){//解析到标记结束时调用该方法
System.out.println("<"+qName+">");
count++;
}
publicvoidcharacters(char[]ch,intstart,intlength){//解析到标记间的数据时调用该方法
Stringtext=newString(ch,start,length);
System.out.println(text);
count++;
}
}
编译运行Example1.java文件,写出运行结果。
开始解析XML文件
<员工名单>
<员工>
<姓名>
黄胜霞
<姓名>
<岗位>
前台接待
<岗位>
<员工>
<员工名单>
解析文件结束
该XML文件共有17标记
16.根据下面XML文档,写出内部DTD文档。
xmlversion="1.0"encoding="UTF-8"?
>
<超市日常销售>
<超市名称>中环之家超市名称>
<经理姓名>张勇经理姓名>
<专柜>
<专柜名称>奶制品专柜名称>
<负责人>李明负责人>
<营业员>王红营业员>
专柜>
<商品销售记录>
<记录>
<商品条码>2014111商品条码>
<商品名称>蒙牛酸酸乳商品名称>
<商品分类>乳酸菌饮品商品分类>
<销售数量>500销售数量>
<销售日期时间>20140222销售日期时间>
<折扣>0.9折扣>
<销售额>5000销售额>
<经办人>李华经办人>
记录>
<记录>
<商品条码>2014222商品条码>
<商品名称>海河牛奶商品名称>
<商品分类>纯牛奶商品分类>
<销售数量>600销售数量>
<销售日期时间>20140223销售日期时间>
<折扣>0.8折扣>
<销售额>6