xml 参考答案
更新时间:2024-03-28 13:47:01 阅读量: 综合文库 文档下载
- xml是什么格式的文件推荐度:
- 相关推荐
参考答案
第1章
一、选择题 1. D
2. C
3. A 4. ABCD 5. AB
二、填空题
1. 一般用途类 特殊用途类
2. 适应出版界的要求 SGML
3. 元标记语言
4. 一组描述一类给定的XML文档 5. 程序开发人员操作XML文档 三、思考题 1. 答:
相同点:都是元标记语言,可以使用来编写出新的标记语言,都是自解释的。可移植性,都不是针对某一具体的应用而设计的,可以跨平台。自由度高,用户可以根据自己的实际情况设计对应的文档。
不同点:SGML的高度可扩展性导致了它的复杂性,SGML的功能比XML强大,不适宜Web上的应用。SGML要求文档一定必须包含DTD,
而XML相对来说比较灵活,不强制要求使用
DTD。
2. 答:
相同点:都是一种标记语言,都是SGML
的子集。具有类似的基本文档结构。
不同点:HTML每个标记都有特定的含义,代表一种页面的设置方法,规定数据进行显示的格式。而XML并不关心数据如何进行显示,相反的,XML注重于表示数据间的逻辑关系。HTML专门针对WWW上的应用,具有相当强的针对性,比如针对具体的浏览器,而XML具备很好的灵活性,适合于为具体的应用服务,它可以针对具体的应用构造相应的数据结构,数据根据XML规定的逻辑关系进行编排,甚至可以将数据提交给专门的应用程序进行处理,而不仅仅局限于浏览器,从而实现用户需要的操作。
3. 答:W3C为XML设定了10个设计目标,分别是:
(1)XML可以直接在Internet上使用。 (2)XML对多种应用程序提供支持。 (3)XML必须与SGML保持兼容性。 (4)可以轻松地编写能够处理XML文档的应用程序。
(5)XML中的可选特征应尽量的少,理想状况为零。
(6)XML文档应该具备可读性好,而且条理清晰。
(7)XML设计应该快速准备好。 (8)XML设计应该规范而且简洁。 (9)XML文档应该易于创建。 2 XML编程原理与实例教程
(10)XML标记的简洁性的重要程度最低。 三、思考题
4. 答:具体应用以下:
(1)不同的应用平台上的数据交换。 (2)在客户-服务器模式下,作为客户端存
储数据的容器,在客户端上可以根据具体需求对数据进行处理,减少重复通信量,服务器只需传递相应的XML文件到客户端上即可。
(3)数据表达的多样性。 (4)作为编制新语言的工具。 5. 答:XML具有许多的优点:
(1)XML是自描述的,它不仅允许定义自己的一套标记,也可以根据其他各种规则来制定标记。
(2)XML允许对文档内容进行检验,例如文档类型定义、XML模式等都是应用于对文档进行验证。
(3)可以使用XML开发各种行业的专有标记语言。
(4)XML的通用性,使它成为不同应用之间交换数据的统一格式。
(5)XML是开放性的,它是W3C定制的开放标准,可以广泛地适用于不同的应用环境。
(6)XML规定了文档的结构,使得对文档的搜索方式和方法得到发展,提高了文档检索的效率。
第2章
一、选择题 1. B
2. C
3. ABCD
4. ABC 5. AC 二、填空题
1. 开始标记 结束标记 内容 2. 元素
3. 标记 文档数据的结构清晰 4. < > ‘ “ & 5. CDATA
1. 答:一个XML文档的基本组成部分,分别是由XML声明、处理指令、文档类型说明、元素、属性和注释组成,其中有些部分是可以省略的,但是一定要出现完整的元素。
2. 答:XML文档具有良构性必须满足: (1)XML文档必须以XML声明作为开始。 (2)每篇XML文档只能有一个根元素。 (3)元素必须有开始和结束标记(空元素除外)。
(4)属性的值必须加引号。
(5)元素可以嵌套子元素,但是两个元素之间不能有重叠域。
(6)必须使用实体引用:&,<,>,'和"来表示符号:“&”、“<”、“>”、“’”和“””。g.各种指令,如注释、处理指令必须正确的编写和放置在文档的正确位置。
3. 答:XML文档的有效性则是指文档具有一定的格式,它遵循文档类型声明的要求,可以根据文档类型声明(例如DTD或者Schema)来检查XML文档是否与文档类型声明中的格式一致,若是一致的,则该文档是有效的XML文档,否则该文档就不具备有效性。
4. 答:用于规定文档必须符合的结构、可以在文档中存在的元素、哪些元素可以具有的属性、在元素内部元素的层次结构以及元素在整个文档中出现的顺序。具体表现为:
(1)可以对标记编制相应的文档; (2)可以加强标记参数内部的一致性; (3)提供XML语法分析器对文档进行处理的依据。
5. 答: 2005year
数字在前
参考答案 3
-soap 连字符在前 you&me 使用了&
Dear:hello 非法使用: U K
中间出现空格 It’s
使用了'
Jim.Green 使用了点符号
6. 答:
comeFrom='Lily'>Hi,lucy
meeting
afternoon!,please go to the No: comeFrom='Mother's friend'>Hi,John
comeFrom='Martin'>Hi,Mark
这里item元素与
item1元素发生部分重叠。改为item1
改为item
comeFrom='Lily'>Hi,lucy
comeFrom=\
四、上机题
1. 最主要是要符合良构性的要求:XML文档必须以XML声明作为开始。每篇XML文档只能有一个根元素。元素必须有开始和结束标记(空元素除外)。属性的值必须加引号。元素可以嵌套子元素,但是两个元素之间不能有重叠域,如例2-1-5-1所示。实体引用只能是&,<,>,
4 XML编程原理与实例教程
'和"。各种指令,如注释、处理指令必须正确的编写和放置在文档的正确位置。
例如下面的文档:
2. 标记名称使用中文是合法的,只要遵循基本的良构性要求即可。
例如下面的文档:
<书>
<名称 >网络名称>
书>
书店>
3. 必须先编写一个作为数据内容的XML文档,接着再将它作为另外一个XML文档的内容,关键是使用CDATA数据类型。
例如下面的文档:
4. 首先先编写一个包含有若干元素的XML,在文档中再任意的在元素开始标记中添加
属性值对。注意属性一定要呈属性值对出现才是良构的。
Li
meme
5. 实体需要先在XML文档中进行DTD声明,使用ENTITY关键字,接着再使用:“&实体名称;”的格式才能使用实体。注意如果不进行DTD声明的话实体是不起作用的。
]>
第3章
一、选择题 1. D
2. A
3. C
4. ABC 5. ABD 二、填空题
1. 遵照一定的文档类型说明
2. 定义XML文档具体格式 数据结构 提供元素属性的相关控制信息
3.
4. ANY内容 任意多个子元素 字符数据 结构限制
5.
参考答案 5
attribute-type default>
三、思考题
1. 答:内部文档类型定义用于与特定XML文档相关联,它必须位于这个XML文档中,它规定了文档的数据组织方式;外部文档类型定义是独立的一个DTD文档,不与XML文档的数据编写在一起,外部DTD有两种类型,第一种是私有型DTD,第二种是公共型的。
2. 答:如果多个XML文档之间存在着一部分相同的数据描述,相互间也存在部分不同的数据描述时,则如果仅仅是简单地想套用某一个外部DTD文件的做法就不能解决问题,而且在一个XML文档中,文档声明“”语句只能出现一次,因此只能对内部DTD和外部DTD进行混合使用才能满足程序的需要。
3. 答:在编写DTD时,并不能很好地规划好文档的结构,比如刚开始想让文档元素包含三个子元素,但是后来又想让它只包含一个子元素。我们不想频繁地修改已经写好的DTD语句,而是想等文档结构全部固定下来之后再修改,此时使用ANY内容无疑是一个很好的解决办法。
4. 答:实体声明主要包括五种类型的实体声明,分别是:内部一般实体、外部解析一般实体、非解析实体、内部参数实体和外部参数实体的声明,它们之间是有所区别的。
5. 答:内部一般实体的使用还要注意下面两点:第一,实体定义时,实体内容不能包含标记声明,也即不能用于元素的声明。第二点需要注意的是在引用一个实体对另外一个实体进行定义时不能存在循环模式。
四、上机题
1. 需要先编写一个正确的内部DTD声明,
接着按照DTD声明编写符合DTD要求的文档,最后进行有效性验证。
编写的程序可以如下所示:
2. 需要先编写一个外部DTD,检验其有效性,保存为一个DTD文件,例如1.dtd,接着再编写XML文档,引入该DTD,最后根据该DTD的格式编写合适的元素。
编写的代码可以如下所示: 【1.dtd】
在另外的XML文档中引用该1.dtd
【1.xml】
3. 首先先编写一个外部DTD文件,接着再
6 XML编程原理与实例教程
新编写一个XML文档,在XML文档中编写内部DTD,最后再编写相应的元素和属性。这里的例子使用的外部DTD为第2题的1.dtd
图A-1
]>
nickname=\
4. 首先需要先编写一个元素的DTD声明,接着编写它的属性声明,再使用属性限制对其作限制。程序例子如下:
运行结果如图A-1所示。
5. 首先在DTD中使用定义实体的关键字ENTITY进行实体的声明,接着就可以在XML文档中使用该实体。具体的例程如下:
程序的显示结果如图A-2所示。
图A-2
第4章
一、选择题 1. B 2. D 3. ABCD
4. AD
5. ABD
二、填空题
1. 不包含子元素和属性 简单数据类型 内建数据类型 用户派生的简单类型
参考答案 7
2. 44 原始数据类型 派生数据类型 能,它不能被其他的元素所引用。因此,全局元用户派生数据类型
3. 多个数据类型 一个支持这多种数据类型的任意类型
4. Schema 惟一 模式约束 名称空间定义 版本信息
三、思考题
1. 答:在规定XML文档的组成元素、属性和元素之间的关系方面DTD与Schema都可以胜任,但是Schema的表达能力更强,能够描述更复杂的关系,并且Schema的描述方式遵循XML的语法,而DTD的语法并不与XML一致。DTD仅提供了两种数据类型,那就是对应于元素的PCDATA类型和对应于属性的CDATA类型。而Schema除了提供多种基本的数据类型以外,还能够灵活地派生新数据类型。
2. 答:在Schema文件中,Schema根元素
的直接子元素就是全局元素。局部元素就是它的
父元素不是Schema根元素的元素。全局元素可
以作为其他元素的引用,而局部元素没有这个功
素的名称必须是惟一的,而局部元素的名称,在不同的上下文环境中是可以相同的,甚至有时候局部元素在其作用范围内可以覆盖掉全局元素。
3. 答:
xmlns:xsi=\a-instance\ xsi:noNamespaceSchemaLocation=\1.xsd\ 66.6必须是十进制数,这里两个小 数点。
xmlns:xsi=\a-instance\ xsi:noNamespaceSchemaLocation=\1.xsd\
4. 答:派生简单数据类型主要通过三个方
面来实现。
列表(list)派生:派生时,只需要指定一个
8 XML编程原理与实例教程
现有的数据类型,并创建一个接受列表的新的数据类型。可以从已有的简单类型来创建列表类型,但不能从已有的list类型和复杂类型来创建列表类型,并且只能从一个现有的数据类型派生。
联合派生:这一类派生将多个数据类型合并为一个支持这多种数据类型的任意类型的一种新类型。派生时,需要指出多个可供选择的数据类型,与列表派生不同的是,可以按照需要定义多个匿名数据类型,进而派生出自己的数据。
限制派生:这种方法对一种已有的数据类型再作出一些限制,使得新派生出的数据类型比被限制的数据类型的取值范围缩小。通过限制派生的数据类型比被限制的数据类型更具约束性,符合新派生数据类型的任意值也符合原来的基础数据类型。
5. 答:
nm*p+:n然后m可以出现0~多次然后p最少出现一次;
\\d{4,5}-\\D{5}:数字出现4~5次然后是-接着
非数字的字符出现5次;
[?*]{,7}-a?b*:?或*任意出现0~7次然后是-接着a出现0~1次最后b可以出现0~多次;
[?|*]{2}10(0)j:?、|和*任意出现2次然后是10,然后是0最后是j;
[02468]{3,}\\D{6}:个位数的偶数出现3~多次然后非数字出现6次;
[()]{4}[{}]{4}:()任意出现4次接着{}任意出现4次;
[^4]{4}:非4字符出现4次。 6. 答:
(1)44 对应的pattern:[^\\D]{3,5}。
字符最少应该出现3次,改成444就可以。(2)123onetwo 对应的pattern:[13579]{3}\\D{6}。
2不属于[13579],换成[13579]中任一个则可以,如153onetwo。
(3)45265l-/\\ 对应的
参考答案 9
pattern:\\d+l-/[\\\\]{2}。
\\\\表示\\,所以\\必须出现2次,改成45265l-/\\\\就可以。
(4)1+2+ (3+4) 对应的pattern:[\\d+()]+。
2+与(3之间不能有空格,去掉空格即可:1+2+(3+4)。
四、上机题
1. 首先需要先创建一个后缀名为.xsd的文件如1.xsd,接着在这个文件中编写Schema语句,具体的例子如下:
xmlns:xsd=\a\
2. 先编写父元素food,让它包含了三个子元素,接着再分别编写三个子元素对应的数据类型即可,具体的例子程序如下:
xmlns:xsd=\a\ name=\
3. 首先声明父元素food,接着指明它的三个子元素都是用户派生的数据类型,接着开始分别编写三个子元素的对应的数据类型,它们分别都是复杂数据类型。具体例子程序如下:
xmlns:xsd=\a\
10 XML编程原理与实例教程
4. 首先声明一个元素,包含了子元素和属性组,接着再使用复杂数据类型声明来声明该属性组,具体的例子程序如下:
xmlns:xsd=\a\
5. 首先先设计需要的模式约束正则式,接着就可以使用这些正则式来作为相应简单数据类型的模式约束值,如 最后再编写使用这些有模式约束的简单数据类型的元素即可。相应的例子程序如下: xmlns:xsd=\a\ 第5章 一、选择题 1. A 2. B 3. C 4. D 5. ABD 二、填空题 1. xmlns 直接声明 默认声明 2. 覆盖 子类 父类 3. 统一资源标识(URI) 4. 目标名称空间 非目标名称空间 5. 覆盖父元素指定的值 参考答案 11 三、思考题 1. 答:不使用名称空间时,当两个不同的文档结合在一起时,如果发生重名的情况时,则不能分清具体的指代关系。使用名称空间区别不同的文档,则重名元素由于属于不同的名称空间,在加上名称空间前缀的情况下也能清楚地加以区别。 2. 答: a ) sea:year(sea:spring, sea:summer)> Beijing 4. 答:在一个XML Schema中,通过elementFormDefault属性来指示schema中声明的 元素或类型属于哪一个名称空间。一个Schema声明的元素或者类型只能属于两个名称空间的其中一个,这两个名称空间分别是目标名称空间和非目标名称空间,非目标名称空间有可能是一个无名名称空间——即它是一个名字为空的名称空间,注意无名名称空间不同于默认名称空间。 四、上机题 首先设计XML文档的数据结构,它可以包 含若干个同学的信息,每个同学的信息又包含了四个子项,分别是:名字、学号、地址和电话。再根据这些信息编写相应的Schema文档,设置同学录的名称空间为:tongxuelu,前缀为txl: 12 XML编程原理与实例教程 xmlns:xs=\\ targetNamespace=\xmlns:txl=\ elementFormDefault=\ 由于指定了qualified值,所以所有的元素都属于tongxunlu这个名称空间。 具体的schema为: xmlns:xs=\\ targetNamespace=\xmlns:txl=\ elementFormDefault=\ name=\ 接着就可以根据这个Schema编写XML文档,填入数据。例如下面的文档: e> e> 第6章 一、选择题 1. D 2. C 3. C 4. ABCD 5. ABCD 二、填空题 1. 可以灵活地对样式表和数据进行维护CSS文件 数据文件 2. 定义标记元素的显示样式 相互独立 样式信息 3. .css 选择符 {样式说明} 4. 内部样式语句 5. 选择符 类选择符 ID选择符 属性选 择符 通用选择符 后继选择符 孩子选择符 兄弟选择符 伪类与伪元素 注释部分 三、思考题 1. 答:CSS的主要作用是定义标记元素的显示样式,并且这些样式信息与数据信息是可以 参考答案 13 相互独立的,从而方便了独立地管理样式信息,克服了HTML样式信息与数据信息混淆不清的毛病。 2. 答: (1)独立性。CSS样式表是一个独立的文档,它与页面数据相分离,当我们更关心的页面样式而不是数据部分时,可以将更多的精力投放到开发CSS文档上而不需要一边设计样式一边嵌套数据。(2)可重用性。由于CSS与数据的明显分离,因此一份设计合理的CSS文档可以被多个 HTML或者XML文档所使用,而不必针对每个 文档设计它们对应的CSS文件,从而在很大程度上提高了文档的可重用性。 (3)准确性。在设计一个网页时,经常会发现一个问题,那就是使用HTML语言编辑的网页各个控件的实际具体位置往往与我们预期的有出入,不能做到所见即所得,而通过CSS设计的页面布局就能做到精确定位。 (4)灵活性。样式表与数据分离导致的结果 就是可以灵活地对样式单和数据进行维护,当需要修改页面样式时,只需要修改CSS文件的相关内容,而需要修改数据时,只需要修改相应的数据文件就可以了,这样也降低了文档维护的难度,使得管理文档的工作更为灵活方便。 3. 答:第一种是包含在 四、上机题 1. 先编写需要进行样式显示的XML文档, 如下所示: 接着再编写针对各个元素的样式信息文件,例如: font-style {font-style: italic;display:block} font-weight {font-weight: 700;display:block} red {color: red;display:block} child {background-color: #6723f3} word {word-spacing: 20px;display: block} 14 XML编程原理与实例教程 显示的结果如图A-3所示。 图A-3 2. 先编写待使用的XML文档,例如: 接着编写四种方式的颜色使用的样式信息,例如: word1 {color: #0fcff;display:block} word2 {color: #c4d;display:block} word3 {color: rgb(51,102,204);display:block} word4 {color: rgb(30%,40%,30%);display:block} 显示结果如图A-4所示。 图A-4 3. 先编写待使用的XML文档,例如: 接着编写四种方式的颜色使用的样式信息,例如: img {background-image:url(1.gif);background-repeat: repeat;font-size: 80px} 显示结果如图A-5所示。 图A-5 4. 先编写待使用的XML文档,例如: version=\encoding=\ href=\ 李白 接着编写四种方式的颜色使用的样式信息,例如: root {display: block;margin: 2em;border-width: 0.5cm; border-color:GREEN;border-style:double; padding:1cm} title {text-align: center;display: block } author {text-align: center;display: block;font: 8pt} detail {display: block} 显示结果如图A-6所示。 参考答案 15 图A-6 5. 直接内部使用方式: xmlns:HTML=\ML-transitional\ 外部CSS文件方式:1.css,内容为: friend { display: block; border: 1px dashed blue; text-align:center; } name { display:block;color:red } 接着在XML文档中使用: 混合方式:外部CSS文件内容不变,XML文档改为: xmlns:HTML=\ML-transitional\ 最后是多文件方式: 【1.CSS】 friend { display: block; border: 1px dashed blue; text-align:center; } 【2.CSS】 name { display:block;color:red } XML文档: 16 XML编程原理与实例教程 第7章 一、选择题 1. C 2. B 3. C 4. AC 5. ABC 二、填空题 1. XSLT XPATH XSL-FO 2. 将一个XML文档转换成另一个XML文档或另一种类型的文档 3. 附加于XML源文档上的转换方式 一个容器 样式信息 样式信息 4. XPath 一个或多个预先确定的模板 5. http://www.w3.org/1999/XSL/Transform xsl 三、思考题 1. 答:XSL是W3C推荐的一种标准,它由三部分组成:第一部分,XSLT:用于将XML文档转换成其他类型文档或其他XML文档的语言。第二部分,XPATH:XSLT使用XPATH语言来对XML文档中的具体部分进行访问和引用。第三部分,XSL-FO:XSL格式化对象,是一种定义XML显示方式的语言。 2. 答:XSL使用到的结点共有七种: (1)根结点:每棵树都必须而且只有一个根结点,它代表了整个文档,它的值与DOM(文档 对象模型)的文档元素是等价的。 (2)元素结点:元素结点表示一个元素,如果XML文档是包含DTD或者Schema,则要求元素的格式与内容需要满足DTD或者Schema中对应的要求,这样才能是一个有效的元素结点。可以对元素结点进行排序,按照结点在文档树中出现的先后顺序进行排序。元素结点可以包含处理指令或者注释指令作为子元素。 (3)文本结点:文本结点由字符数据组成,注释和处理指令不属于文本结点。 (4)属性结点:属性结点表示属性,如果XML文档是包含DTD或者Schema,则属性的格式也必须要符合要求。 (5)名称空间结点:每个元素都有与其对应的名称空间或者缺省名称空间,这些名称空间构成名称空间结点。 (6)处理指令结点:由处理指令构成的结点。(7)注释结点:注释结点与注释也即由符号“”包含的字符串相关联。 参考答案 17 3. 答:XSL提供强大的模式编排能力,能够支持数据筛选,句法简洁,它拥有自己的一套格式控制机制,还能够自主地定义出新的元素,支持对XML文档的多种格式转换,例如文档转换,能够控制XML数据元素是否显示,具有寻址功能;HTML不能灵活的定义新的元素,不能支持数据筛选,没有能够定义模板的功能,从而不能有效地对文档进行模块化,也不能控制元素内容是否显示。 4. 答:模板用于规定附加于XML源文档上的转换方式,它类似于一个容器,用于存放一些样式信息,这些样式信息是作用于源树上的各种结点,并且可以自由的规定哪一种模板作用于哪一个结点,哪一个结点需要出现,哪一个结点不需要出现。 5. 答:绝对定位就是从XML文档的根“/”开始按照元素在文档树中的具体位置指定一个绝对的路径,它的参照物就是文档的根。相对定位从当前所处的元素开始,以当前元素为参照物,经定位的条件与寻找目标元素。 四、上机题 1. 首先设计一个包含三层逻辑结构的XML文档。这里采用天气信息作为这个XML的 数据内容,包含了根元素city-weather,接着是各个城市的天气信息元素city,它包含了一个属性name和一个temperature子元素,具体的XML文档如下所示: 接着编写一个单模版的XSL文档,它使用表格来显示天气信息,使用for-each来遍历文档,使用value-of来获取具体值。具体的格式如下: 2. 使用第一道题的XML,将XSL文档改成使用两个模版的形式,如下所示: 3. 编写第一个XSL,采用绝对定位对上面例子的元素进行定位,绝对定位定位了name属性和temperature元素,看下面的程序: 下面的程序使用的是相对定位的方法: 4. 这里使用if来控制前面题目的XML文 xmlns:xsl=\sform\ test=\ temperature: 5. 首先使用第5章的同学录数据作为XML数据文件,接着再使用number元素对每个同学项作编号,再使用sort对学号id作排序。具体程序如下: 参考答案 19 第8章 一、选择题 1. B 2. D 3. A 4. ABC 二、填空题 1. 在HTML文档中直接嵌套XML数据单独存放成一个独立的XML文档,接着在需要使 用数据岛的HTML页面中通过语句进行调用 2. 数据 查询 修改 添加 删除 3. 数据 数据源 4. 遵循XML的语法规则 根元素 5. XML xml 根元素 三、思考题 1. 答:数据岛是指存在于HTML页面中的XML代码。数据岛允许你在HTML页面中集成XML,对XML编写脚本,而不需要通过脚本或 2. 答:数据岛的结构: XML数据的根元素,因此,在 子元素。每个元素都能包含若干个不同的属性。 四、上机题 1. 首先确定数据岛XML部分的数据结构,接着编写一个HTML文件,将数据岛插入到 HTML文件中。具体的程序如下: 程序的显示结果如图A-7所示。 图A-7 2. 首先确定数据岛XML部分的数据结构,编写一个XML文件如: 20 XML编程原理与实例教程 接着编写HTML文档: 最后是程序的显示结果如图A-8所示。 图A-8 3. 首先确定每个同学的信息的XML数据结构,接着填充信息,最后编写HTML文档,程序如下: 编号: 名字: 年龄: 城市: 电话: 程序的显示结果如图A-9所示。 图A-9 4. 使用数据岛将全部记录显示,这里使用了表格table对象,将每条记录作为表格中的一行 参考答案 21 显示,程序如下: align=\ datafld=\ 显示结果如图A-10所示。 图A-10 5. 首先新建一个HTML文档,在body部分插入一个数据岛data1,接着再使用两个HTML对象:textarea来显示想要显示的内容。放置一个按键,编写它的处理函数on(),使第一个textarea显示数据岛的元素内容,第二个textarea显示数据岛元素的属性no。 22 XML编程原理与实例教程 显示结果如图A-11所示。 图A-11 6. 通过使用recordset的moveFirst()方法达到将游标指向第一条记录的效果。使用 movePrevious()会将游标指向当前显示的记录的前一个记录。使用moveNext()会将游标指向当前显示的记录的后一个记录。 datasrc=#students DataFLD=name size=\ 年龄: type=text datasrc=#students DataFLD=age size=\ 城市 : type=text datasrc=#students DataFLD=city size=\ 电话: 参考答案 23 25 显示结果如图A-12所示。 图A-12 第9章 一、选择题 1. C 2. BC 3. A 4. D 5. D 6. B 二、填空题 1. simple resource 2. hrefencoding、accept accept-language 3. childNodes NodeList attributes 4. Document node 5. 事件驱动 函数 事件 三、思考题 1. 答:扩展链接提供完整的XLink链接功能,比如输入链接和第三方链接,还有多资源的 链接。而简单链接则只提供一个输出链接连接两个资源。 简单链接的优点在于方便易用,可以在常用的情形下使用。 扩展链接优点在于具有多方面的能力,包括: (1)支持多个本地或者远程资源。 (2)指定从远程资源到本地资源的弧。 (3)给固定的弧指定一个标题。 (4)给一个本地资源指定一个角色或者标题。 (5)给整个链接指定一个角色或者标题。 2. 答:与XInclude相比,外部实体存在很多的不足: (1)外部实体必须在 DTD 或内部子集中进行声明; (2)外部实体必须是格式规范的 XML, XInclude 支持包含非 XML 文本文档; (3)只能包括整个外部实体,不能只包括文档的一部分; (4)外部实体未能加载外部实体是致命错误,XInclude允许作者控制恢复过程,提供一个缺省加载的内容。 3. 答:文档数据模型使用一种类似树的对象结点的层次结构来描述XML文档,但为了不限定其实现方法,它不称为“树”,而是称之为DOM结构模型。DOM结构模型将文档中的每个项目—元素、属性、注释、处理指令,甚至文本都看成结点,定义了不同的对象结点类型对应于不同类型的项目。当使用DOM对XML文档进行操作时,它首先要解析文件,将文件分解为一个一个独立的不同类型的结点,并根据文档的结构特征, 24 XML编程原理与实例教程 以结点树的形式在内存中创建XML文件的表示。DOM提供了强大的应用程序接口,通过它们,开发人员可以在结点树中游历,并根据需要增加,修改,删除结点树的结点。实际上,对结点树的访问和修改,就是对XML文档的操作。 4. 答:SAX采用事件驱动机制进行XML文档解析,当开发人员进行基于事件的编程的时候,可以创建函数来响应用户定义的事件(比如OnClick事件),而在SAX解析器装载XML文件时,它顺序读入文档,并不断产生相应的事件发送给应用程序,程序开发者可以根据SAX规定的接口规范来编写事件处理函数,响应解析器产生的这些事件,完成XML文档解析。 5. 答:DOM的特点是在于先将整个XML文档读入并解释,这带来了操作的方便性,可以支持删除、修改和移动结点等功能,文档一次载入,可以多次使用。缺点就在于刚开始的时候需要消耗大量时间去读入和解释文档,也消耗了大量的内存空间去保存数据。 SAX的特点使用事件驱动机制进行XML文档解析,优点在于不用事先读入解析整个文档,占用资源少,缺点在于文档边读入边解析,无法 进行修改,而且数据无法重复使用。 四、上机题 1. 例9-1-1表示的是从一个表示学生名字的本地资源Pat Jones出发,可以访问到描述该学生的文档students/patjones62.xml。为了说明这样的一个链接,如果使用扩展链接,我们需要一个描述本地资源的resource类型元素studentname,一个locator类型的元素studentdesc来定位远程的资源students/patjones62.xml,以及一个从本地的resource到远程资源的arc类型元素desc。根据此分析,可以写出源程序如下: 文件:9A_1.dtd xmlns:xlink CDATA #FIXED \ xlink:type (extended) #FIXED \ xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED> xlink:type (resource) #FIXED \ xlink:label NMTOKEN #IMPLIED> xlink:type (locator) #FIXED \ xlink:href CDATA #REQUIRED xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> xlink:type (arc) #FIXED \ xlink:arcrole CDATA #IMPLIED xlink:title CDATA #IMPLIED 参考答案 25 xlink:show (new |replace |embed |other |none) #IMPLIED xlink:actuate (onLoad |onRequest |other |none) #IMPLIED xlink:from NMTOKEN #IMPLIED xlink:to NMTOKEN #IMPLIED> 文件:9A_1.xml xlink:label=\Jones xlink:href=\xlink:label=\ 2. 第一步,程序流程设计:首先是读入XML文件,并进行解析,得到DOM树。然后获取所有标记名为score的元素,然后依次访问每个元素,如果元素的course属性值为XML,则将分数累加,并将计数值加1,最后将累加和除以计数值得到平均分。 第二步,参照9.3中DOM的使用,编写程序,程序源代码如下: 文件dom9A_2.java import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; // JAXP import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; // DOM import org.w3c.dom.Document; import org.w3c.dom.DocumentType; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class dom9A_2{ int sum=0; int cnt=0; public static void main(String[] args) { dom9A_2 d1 = new dom9A_2(); d1.parse(\ } private void parse(String filename) { try { // 获得 Document Builder Factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //打开确认选项,关掉名称空间敏感性选项。 factory.setValidating(false); factory.setNamespaceAware(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File(filename)); doc.normalizeDocument() ; // 取得所有的score元素,如果course属性为xml的话,将分数相加 NodeList scoreList=null; scoreList=doc.getElementsByTagName(\); for (int i = 0; i < scoreList.getLength(); i++) { Element score=(Element)(scoreList.item(i)); String attr=score.getAttribute(\ if(attr.compareTo(\ { String value =score.getTextContent(); int xmlscore=Integer.valueOf(value); 26 XML编程原理与实例教程 sum=sum+xmlscore; cnt++; } } System.out.println(\average of xml is:\ } catch (Exception e) { e.printStackTrace(); } } } 第三步:编译程序:javac dom9A_2.java。 第四步:运行程序:java dom9A_2;运行结果如图A-13所示。 图A-13 3. 第一步,程序流程设计:首先是读入XML文件,并进行解析,得到DOM树。接着获取所有标记名为score的元素,然后依次访问每个元素,根据题目给出的对应规则计算分数,并设置结点的文本值,最后调用保存函数将数据保存位9A_3.xml。 第二步,参照9.3中DOM的使用,编写程序,程序源代码如下: 文件dom9A_3.java import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.io.FileOutputStream; // JAXP import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.*; // DOM import org.w3c.dom.Document; import org.w3c.dom.DocumentType; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; public class dom9A_3{ Document doc=null; public static void main(String[] args) { dom9A_3 d1 = new dom9A_3(); d1.parse(\ d1.to5(); d1.saveDoc(\ } private void parse(String filename) { try { // 获得 Document Builder Factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //打开确认选项,关掉名称空间敏感性选项。 factory.setValidating(false); factory.setNamespaceAware(false); DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.parse(new File(filename)); doc.normalizeDocument() ; } catch (Exception e) { e.printStackTrace(); } 参考答案 } private void saveDoc(String filename) { //把doc代表的XML dom树输出到指定的文 27 件 象 DOMSource domSrc= new try { //首先创建一个DOMSource对 int score5=0; if(score100>=90&&score100<=100) score5=5; else if(score100>=75&&score100<=89) score5=4; else if(score100>=60&&score100<=74) DOMSource (doc); File outfile = new File (filename); //创建一个StreamResult对 象 StreamResult stream = new StreamResult (outfile); //调用JAXP中的XSLT引擎来实现输出DOM树到XML文件中的功能。 //输入为DOMSource对象,输出为StreamResut对象。 // 首 先 创 建 一 个 TransformerFactory对象,再由此创建Transformer对象,使用它来输出XML文档。 TransformerFactory tranfac=TransformerFactory.newInstance(); Transformer trans=tranfac.newTransformer (); //调用Transformer对象 的transform()方法输出xml, trans.transform(domSrc,stream); } catch (Exception e) { e.printStackTrace(); } } private void to5() { try { // 取得所有的score元素,如 果course属性为xml的话,将分数相加 NodeList scoreList=null; scoreList=doc.getElementsByTagName(\core\ for (int i = 0; i < scoreList.getLength(); i++) { Element score=(Element)(scoreList.item(i)); String value =score.getTextContent(); int score100=Integer.valueOf(value); score5=3; else if(score100>=40&&score100<=59) score5=2; else if(score100>=10&&score100<=39) score5=1; else score5=0; score.setTextContent(String.valueOf(score5)); } } catch (Exception e) { e.printStackTrace(); } } } 第三步:编译程序:javac dom9A_3.java。 第四步:运行程序:java dom9A_3;运行结果得到文件9A_3.xml 文件dom9A_3.xml 三\ 四\ 28 XML编程原理与实例教程 \ 五\ 4. 第一步,程序流程设计:首先是创建一个SAX解析器,进行XML解析,接着编写事件处理函数,在startElement判断如果是XML课程,则设置标志为真,而在endElement函数将标志改为假,在characters函数中,如果标志为真,则将分数累加,并将计数值加1,最后在endDocument函数将累加和除以计数值得到平均分。 第二步,参照9.4中SAX的使用,编写程序,程序源代码如下: 文件dom9A_4.java import java.io.FileReader; import org.xml.sax.XMLReader; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.helpers.XMLReaderFactory; import org.xml.sax.helpers.DefaultHandler; public class sax9A_4 extends DefaultHandler { int sum=0; int cnt=0; boolean inXml=false; public static void main(String[] args) { try { XMLReader xr = XMLReaderFactory.createXMLReader(); sax9A_4 handler = new sax9A_4(); xr.setContentHandler(handler); xr.setErrorHandler(handler); FileReader r = new FileReader(\ xr.parse(new InputSource(r)); } catch (Exception e) { System.err.println(e); } } public sax9A_4 () { super(); } //////////////////////////////////// //事件处理函数 //////////////////////////////////// public void endDocument () { System.out.println(\average of xml is:\ } public void startElement (String uri, String name, String qName, Attributes atts) { if(qName.compareTo(\ { String course=atts.getValue(\ if(course.compareTo(\ { inXml=true; } } } public void endElement (String uri, String name, String qName) { if(inXml) { if(qName.compareTo(\ { inXml=false; } } } public void characters (char ch[], int 参考答案 29 start, int length) { if(inXml) { String value=String.valueOf(ch,start,length); int xmlscore=Integer.valueOf(value); sum=sum+xmlscore; cnt++; } } } 第三步:编译程序:javac dom9A_4.java。 第四步:运行程序:java dom9A_4;运行结果如图A-14所示。 图A-14 5. 第一步,流程设计,参照9.5节内容,AJAX操作步骤包括创建一个XMLHttpRequest对象,然后接下来就是发送一个请求,最后使用send发送请求,然后在readyState属性改变时的事件处理函数中分析返回内容并显示。 第二步:编写程序,程序源代码如下: 文件9A_5.html 第三步,是用IE打开文件,得到内容,结果如图A-15所示。如果查看源代码,发现与直接 30 XML编程原理与实例教程 打开GOOGLE的源代码是不一样的,得到的源代码就是与上面的函数相符合的。 图A-15 第10章 一、选择题 1. B 2. D 3. ABCD 4. ABC 5. BC 二、填空题 1. 发展已存在的数据库系统,使它成为XML-enabled数据库 建议为XML发展专有的数 据库,称为Native XML Database 2. 逻辑模型 存取文件 元素 属性PCDATA 文件顺序 3. XML文档 基本存储单位 4. 文档集 查询语言 修改与删除 事务锁与并发控制 Round-tripping 应用程序接口API 索引 外部数据与外部实体存储 5. 结点集 布尔值 数字 字符串 三、思考题 1. 答:XML-enabled数据库是基于传统数据库系统发展起来的支持XML的数据库系统,它的优势在于: 第一,关系型数据库经过几十年的发展已趋 于完善,并且它是建立在完备的理论基础之上的数据库系统,通过对传统数据库的改进和发展而建立起来的XML-enabled数据库系统可以满足对XML数据的管理,同时也不会因此而改变了数据库实现的技术基础。 第二,关系数据库等传统数据库的使用时间长、使用范围广,造成了人们对这些数据库产品的认知度高,习惯于传统数据库的执行方式和操作方法,XML-enabled数据库是以传统数据库为基础的支持XML的数据库系统,它在数据的底层实现上更靠近于传统数据库,甚至说XML-enabled数据库是支持XML的传统数据库也不为过。 第三,在企业级应用方面,由于大量的企业 平台上面运行的都是传统数据库系统,稳定、可 靠、安全是企业级应用优先考虑的原则,因而与 Native XML Database相比,由于Native XML Database目前的理论基础并不完善,实现技术也在不断的变化之中,它们的实用性也没有经过系统而且持久的验证。 它的缺点就在于因为RDBMS 需要将一个 XML 文档分解成多个相互关联的表,从而导致在对数据库进行查询时需要许多相关联的检索和 参考答案 31 联合操作,这样就要求数据库系统必须具有较高的处理能力,否则就会引起性能的明显下降。 此外,其他数据库系统一般都不能处理具有动态结构的数据,而这正是 XML 的主要可扩展功能和优势。因此开销比较大。 2. 答:都需要建立一种逻辑模型来保存XML文档,都能提供对XML文档的查询、添加、语言,通常这种语言会是XPath。 (3)修改与删除,目前对于Native XML Database并没有较为成熟地修改与删除语言,存修改和删除功能。不同点在于,原生XML数据库能处理具有动态结构的数据,直接将XML文档作为数据库的逻辑数据基本单位,处理是面向XML文档而不是其他的结构,不需要额外的数据转换层,在处理XML文档方面具备先天的优势。3. 答:Native XML Database为 XML 文档(而不是文档中的数据)定义了一个逻辑模型,并根据该模型存取文件。这个模型至少应包括元素、属性、PCDATA 和文件顺序。一般具有如下特征:文档集、查询语言、修改与删除、事务、锁与并发控制、Round-tripping、应用程序接口API、索引、外部数据与外部实体存储。 4. 答:原生XML数据库一般具有如下特 征:文档集、查询语言、修改与删除、事务、锁与并发控制、Round-tripping、应用程序接口API、索引、外部数据与外部实体存储。 (1)文档集,文档集是一类文档的集合,它将具有相同模式的一类文档集合起来提供给数据库用户。 (2)查询语言,作为数据库系统,一定需要提供特定的查询语言方能实现对数据的访问。一般的,原生XML数据库至少需要支持一种查询 在着多种对XML数据库进行修改和删除的方法,比如简单地替换掉现有文档、通过DOM来修改文档或者使用XML API等方法。 (4)事务,作为一个完整的数据据库系统,必须具备支持事务处理的功能。 (5)锁与并发控制,原生XML数据库在支持事务处理时必须引入加锁机制,并且需要进行并发控制。 (6)Round-tripping,文档还原功能,所有原生XML数据库都能够在元素、属性、CDATA和文件顺序的级别上为文档提供Round-tripping功能。 (7)应用程序接口API,原生XML数据库一般会提供应用程序编程接口(API),利用这一接口,可以在程序中连接数据库进行操作,通过API可以执行查询、修改、删除、浏览元数据等操作。 (8)索引,索引可用于提高检索的速度。 (9)外部数据,一些数据的获得有时候是依赖于存储在其他类型数据库中的数据。 (10)外部实体存储。 32 XML编程原理与实例教程 5. 答:Tamino XML Server存在几个优点: 也会在不久的将来成为国际标准。 (1)它实现了跨平台、跨系统间异构数据的存取与交换。 (2)它具备较高的效率,由于直接使用XML的原生数据作为处理的对象,使得系统不需要将XML文档转化为其他数据形式,减少了中间的处理环节,从而大大的提高了数据处理的效率。 (3)它具有良好的可扩展性。X-Node的引 入,使得Tamino可以同多种数据源和应用系统联 结,进一步拓展了Tamino的应用环境。Server Extension 编程接口使得开发者可以开发适合自 己需要的应用系统。 (4)它具备较强的管理性。通过Tamino Manager可以进行多个Tamino服务器的Internet远程管理。 (5)它使用开放式标准。Tamino遵循开放式DBMS原理提供如OLE-DB、DCOM、ODBC和JDBC等标准接口。交换数据格式采用W3C标准XML,查询所采用的W3C草案XQL相信 (6)它支持全文检索。Tamino 可以支持对XML文档由头至尾的扫描。 它完整地实现了XML数据库系统的功能,而不是仅仅提供一种在数据库管理系统同Web应用间的转换接口。 四、上机题 1. 步骤: (1)分析10-3-2-1.xml,首先编写选择结点 的XPath表达式,从sellitem出发,表达式为: book[auther='Andrew S.Tanenbaum']; (2)编写相应的XSL文件如下: select=\S.Tanenbaum']\ (3)修改10-3-2-1.xml,增加 参考答案 33 xsl。 (4)使用IE打开得到结果。 2. 步骤: (1)编写查询文件,查询auther.xml中的每个作者和10-3-2-1.xml中作者当前名字的所有book的名字,然后按要求输出。 (2)在Altova XMLSpy中,打开查询文件,单击xsl/xquery→xquery execute运行脚本,得到 结果。 文件10A_2.xq xquery version \ declare namespace ex=\ let $c := doc(\ata($auther/name)] order by ($auther/name ) return {$auther/name} {$auther/description} 本文来源:https://www.bwwdw.com/article/k8sr.html 正在阅读: xml 参考答案03-28 2014年第七届政治学与国际关系学术共同体年会 国际关系百年变迁11-29 关于区审计局2021年年度工作总结汇报08-04 病案室复审准备的材料明细10-14 【完整版】2019-2025年中国机床工具行业提升企业核心竞争力战略研究报告04-29 副市长在2023年全市经济工作规划情况汇报会上的发言范文03-22
city:编号 名字 年龄 城市 电话