XML程序设计习题解答.docx

上传人:b****8 文档编号:11272651 上传时间:2023-02-26 格式:DOCX 页数:23 大小:22KB
下载 相关 举报
XML程序设计习题解答.docx_第1页
第1页 / 共23页
XML程序设计习题解答.docx_第2页
第2页 / 共23页
XML程序设计习题解答.docx_第3页
第3页 / 共23页
XML程序设计习题解答.docx_第4页
第4页 / 共23页
XML程序设计习题解答.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

XML程序设计习题解答.docx

《XML程序设计习题解答.docx》由会员分享,可在线阅读,更多相关《XML程序设计习题解答.docx(23页珍藏版)》请在冰豆网上搜索。

XML程序设计习题解答.docx

XML程序设计习题解答

习题一

1.答:

HTML是用来编写Web页的语言、不允许用户自定义标记,HTML体现数据的显示格式。

XML描述数据的组织结构、可自定义标记,其标记名称是对标记所包含的数据内容含义的抽象,而不是数据的显示格式。

2.答:

使用UTF-8保存5.答:

(1)不可以,

(2)可以,(3)不可以6.答:

Show.css:

time

{display:

block;font-size:

18pt;font-weight:

bold

}

hour

{display:

line;font-size:

16pt;font-style:

italic

}

mimute

{display:

line;font-size:

9pt;font-weight:

bold

}

习题二1.答:

(1)使用ANSI编码。

(2)可以。

(3)不合理。

2.答:

不相同。

3.答:

(1)和

(2)。

4.答:

A3.xml。

5.答:

“root”标记包含的文本内容都是空白字符。

“a1”标记包含的文本内容:

“a2”标记包含的文本内容:

子曰"有朋自远方来,不亦乐乎"。

6.答:

解析器不对CDATA段的内容做分析处理,CDATA段中的内容可以包含任意的字符。

(1)和(5)是正确的CDATA段。

(2)不正确,原因是CDATA段的开始标识中有回行,(3)不正确,原因是:

CDATA段的结束标识不正确,(4)不正确,原因是CDATA段中嵌套了另一个CDATA段。

7.答:

开关>我也是中国制造的

开关>

是错误的,因为p1的有效范围是在“电视机”标记中。

8.答:

标记:

"root"未隶属任何名称空间

标记:

"电视机"隶书的名称空间:

www.C

标记:

"显示器"隶书的名称空间:

www.C

标记:

"开关"隶书的名称空间:

www.G

标记:

"电线"隶书的名称空间:

www.E

习题三1.答:

一个规范的XML文件如果和某个DTD文件相关联,并遵守该DTD文件规定的约束条件,就称之为有效的XML文件。

2.答:

DTD文件的编码必须和其约束的XML文件的编码相一致。

3.答:

无关。

4.答:

(1)使用SYSTEM文档类型声明的格式:

(2)使用PUBLIC文档类型声明的格式:

DOCTYPE根标记的名称PUBLIC"正式公用标识符""DTD文件的URI">

5.答:

一定。

6.答:

(1)约束标记“张三”必须有“学号”属性

(2)约束标记“张三”必须有“学号”属性,而且学号的属性值是固定的220123。

(3)约束标记“张三”可以有也可以没有“学号”属性。

7.答:

ID类型的属性的属性值具有互斥性,即所有ID类型的属性的属性值必须互不相同。

8.答:

不合理。

9.答:

(1)、(3)和(4)。

10.答,B.xml不是有效的。

将B.xml修改为有效:

B.xml

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPE成绩单SYSTEM"A.dtd">

<成绩单>

<学生>

<姓名>张三

<成绩>优秀

<学生>

<姓名>李四

<成绩>良好

11.答:

Goods.xml

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPE商品信息SYSTEM"dtdFile.dtd">

<商品信息>

<商品商标=“Lenovo”>

名称xmlns:

p=“ookk”条形码=“1298-24”>

联想电脑

名称>

<价钱>1234

<连锁店>

名称xmlns:

q="Beijing">

中关村专卖店

<地点>北京市

习题四1.答:

使用操作指令:

xml-stylesheethref="样式表的URI"type="text/css"?

>

2.答:

student

{display:

block;font-size:

18pt;color:

red;

}

3.答:

假设XML文件中有三个标记的名称都是“name”,“ID”属性分别是a001,a002,a003。

CSS文件如下:

namea001

{display:

block;

border-style:

double;

width=260;

height=120

}

namea002

{display:

block;

border-style:

dotted;

width=150;

height=60;

font-size:

10pt;

}

namea003

{display:

block;

border-style:

ridge;

width=90;

height=30;

font-size:

10pt;

}

4.答:

修改XML文件。

5.答:

math

{display:

block;

font-size:

12pt;

font-style:

italic;

background-color:

rgb(227,228,229);

}

chemistry

{display:

block;

font-size:

12pt;

text-decoration:

underline;

background-color:

cyan;

}

low

{display:

line;

font-size:

8pt;

vertical-align:

bottom;

}

习题五1.答:

由若干个模板所构成,但必须有一个主模板。

2.答:

必须有主模板吗。

主要体现在该模板中的match属性的值是“/”:

templatematch="/">

主模板的内容

template>

3.答:

student的孙标记。

4.答:

<台灯/>

234元

北京

<壁灯/>

56元

上海

5.答:

<张三/>

获得一等奖学金

25岁

习题六1.答:

一个返回子孙节点,而另一个只返回子节点:

(1)getElementsByTagName(Stringname):

返回一个NodeList对象,该对象由当前节点的Element类型子孙节点组成,这些子孙节点的名字由参数name指定

(2)getChildNodes():

节点调用该方法返回一个由当前节点的所有子节点组成的NodeList对象。

2.答:

分别是DocumentType类型和Element类型。

3.答:

Element类型?

4.答:

不可以。

5.答:

JAXPXiti5.java

importorg.w3c.dom.*;

importjavax.xml.parsers.*;

importjava.io.*;

publicclassJAXPXiti5

{

publicstaticvoidmain(Stringargs[])

{

OutResultoutContent=newOutResult();

try{

DocumentBuilderFactoryfactory=

DocumentBuilderFactory.newInstance();

DocumentBuilderbuilder=factory.newDocumentBuilder();

Documentdocument=builder.parse(newFile("a.xml"));

Elementroot=document.getDocumentElement();

StringrootName=root.getNodeName();

NodeListnodeList=root.getChildNodes();

outContent.output(nodeList);

System.out.println("数学平均成绩"+outContent.mathAver);

System.out.println("物理平均成绩"+outContent.physicsAver);

}

catch(Exceptione)

{

System.out.println(e);

}

}

}

classOutResult

{

doublesumAllMath,sumAllPhysics,mathAver,physicsAver;

intmathNumber=0,physicsNumber=0;

publicvoidoutput(NodeListnodeList)

{

intsize=nodeList.getLength();

for(intk=0;k

{

Nodenode=nodeList.item(k);

if(node.getNodeType()==Node.TEXT_NODE)

{

TexttextNode=(Text)node;

Stringcontent=textNode.getWholeText();

System.out.print(content);

Elementparent=(Element)textNode.getParentNode();

if(parent.getNodeName().equals("数学"))

{

mathNumber++;

sumAllMath=sumAllMath+Double.parseDouble(content.trim());

}

if(parent.getNodeName().equals("物理"))

{

physicsNumber++;

sumAllPhysics=sumAllPhysics+Double.parseDouble(content.trim());

}

}

if(node.getNodeType()==Node.ELEMENT_NODE)

{

ElementelementNode=(Element)node;

Stringname=elementNode.getNodeName();

System.out.print(name);

NodeListnodes=elementNode.getChildNodes();

output(nodes);

}

}

mathAver=sumAllMath/mathNumber;

physicsAver=sumAllPhysics/physicsNumber;

}

}

6.答:

JAXPXiti6.java

importjavax.xml.transform.*;

importjavax.xml.transform.stream.*;

importjavax.xml.transform.dom.*;

importorg.w3c.dom.*;

importjavax.xml.parsers.*;

importjava.io.*;

publicclassJAXPXiti6{

publicstaticvoidmain(Stringargs[]){

try{String[]车次={"T21","K456","T89"};

String[]区间={"北京-上海","长沙-北京","天津-重庆"};

DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();

DocumentBuilderdomPaser=factory.newDocumentBuilder();

Documentdocument=domPaser.newDocument();

document.setXmlVersion("1.0");

Elementroot=document.createElement("列车表");

document.appendChild(root);

for(intk=1;k<=车次.length;k++){

Nodenode=document.createElement("客车");

root.appendChild(node);

}

NodeListnodeList=document.getElementsByTagName("客车");

intsize=nodeList.getLength();

for(intk=0;k

Nodenode=nodeList.item(k);

if(node.getNodeType()==Node.ELEMENT_NODE){

ElementelementNode=(Element)node;

NodenodeName=document.createElement("车次");

NodenodeNumber=document.createElement("运行区间");

nodeName.appendChild(document.createTextNode(车次[k]));

nodeNumber.appendChild(document.createTextNode(区间[k]));

elementNode.appendChild(nodeName);

elementNode.appendChild(nodeNumber);

}

}

TransformerFactorytransFactory=TransformerFactory.newInstance();

Transformertransformer=transFactory.newTransformer();

DOMSourcedomSource=newDOMSource(document);

Filefile=newFile("列车表.xml");

FileOutputStreamout=newFileOutputStream(file);

StreamResultxmlResult=newStreamResult(out);

transformer.transform(domSource,xmlResult);

out.close();

}

catch(Exceptione){

System.out.println(e);

}

}

}

习题七1.答:

DOM解析器的核心是在内存中建立和XML文件相对应的树形结构数据,如果XML文件较大,相应的Document对象就要占用较多的内存空间;SAX解析器不在内存中建立和XML文件相对应的树形结构数据,和DOM解析器相比,SAX解析器占有的内存少。

2.答:

参见例子1的表7.1。

3.答:

不报告。

4.答:

uri和localName的取值是空字符组成的串,即uri="",localName="",参数qName取值是标记名称,atts是标记的所有属性的集合。

5.答:

当忽略标记之间形成的空白区域时。

6.答:

是“文件定位器”事件。

7.答:

Xiti7.java

importorg.w3c.dom.*;

importjavax.xml.parsers.*;

importjava.io.*;

publicclassXiti7

{

publicstaticvoidmain(Stringargs[])

{

OutTotaloutWeight=newOutTotal();

try{

DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();

DocumentBuilderbuilder=factory.newDocumentBuilder();

Documentdocument=builder.parse(newFile("a.xml"));

Elementroot=document.getDocumentElement();

NodeListnodeList=root.getChildNodes();

outWeight.output(nodeList);

System.out.println("总重量:

"+outWeight.sum);

}

catch(Exceptione){

System.out.println(e);

}

}

}

classOutTotal

{

doublesum;

publicvoidoutput(NodeListnodeList)

{

intsize=nodeList.getLength();

for(intk=0;k

{

Nodenode=nodeList.item(k);

if(node.getNodeType()==Node.TEXT_NODE)

{

TexttextNode=(Text)node;

Stringcontent=textNode.getWholeText();

System.out.print(content);

Elementparent=(Element)textNode.getParentNode();

if(parent.getNodeName().equals("重量"))

sum=sum+Double.parseDouble(content.trim());}

if(node.getNodeType()==Node.ELEMENT_NODE)

{

ElementelementNode=(Element)node;

Stringname=elementNode.getNodeName();

System.out.print(name);

NodeListnodes=elementNode.getChildNodes();

output(nodes);

}

}

}

}

习题八1.答:

Node节点由可细分为Document,Element,Text,Attribue,ProcessingInstruction和Namespace节点。

2.答:

ProcessingInstruction和Element子节点。

3.答:

Element类型节点对应XML中的标记。

4.答:

可以。

5.答:

一个XPath路径表达式由若干个“定位步”构成。

6.答:

假设XPath绝对路径经过第n个定位步后寻找出的第n个节点集中包含有m个节点,这m个节点按着他们在XML文件对应的顺序进行排列,序号从1开始,然后这m个节点依次使用第n+1个定位步寻找节点,它们找出的全部节点就是XPath绝对路径经过第n+1个定位步后寻找出的第n+1个节点集,依次类推,XPath绝对路径经过最后一个定位步寻找出的节点集就是XPapth绝对路径寻找出的节点集。

5.答:

谓词的目的是给出定位步所寻找出的节点需满足的进一步条件,即当前节点在使用定位步的轴和节点测试找出若干个节点后,再使用谓词从这些节点中筛选出满足谓词条件的节点。

6.答:

(1)按顺序对应着第一个名字是“教室”的标记中的第一个名字是“桌子”标记的“价格”标记。

(2)对应着具有属性number,属性值是02、名字为“桌子”的标记,而且这些桌子标记有子标记“价格”,而且价格包含的文本是数字且值大于等于360。

(3)对应“教室”的属性。

(4)number属性所在的“教室”节点。

(5)109

(6)396,267

(7)对应着“教室”标记,具教室标记有孙标记“价格”,且“价格”标记含有的数字文本的值大于390,即是第2个“教室”标记。

(8)对应着价格标记,且“价格”标记含有的数字文本的值大于396。

7.答:

(1)【结果1】:

A1001定单的总额:

(2)【结果2】:

40.0

(3)【结果3】:

4

(4)【结果4】:

100

 

8.答:

Xiti8.java

importjavax.xml.xpath.*;

importorg.xml.sax.*;

importorg.w3c.dom.*;

publicclassXiti8{

publicstaticvoidmain(Stringargs[]){

try{XPathFactoryxPathFactory=XPathFactory.newInstance();

XPathxPath=xPathFactory.newXPath();

InputSourcesource=newInputSource("Xiti8.xml");

StringcountPath="count(/货品列表/货品/重量)";

StringsumPath="sum(/货品列表/货品/重量)";

Doublesum=(Double)xPath.evaluate(sumPath,source,XPathConstants.NUMBER);

doubletotal=sum.doubleValue();

System.out.println("总重量:

"+total);

}

catch(Exceptionexp){

System.out.println(exp);

}

}

}

9.答:

Student.xml

xmlversion="1.0"encoding="UTF-8"?

>

<学生列表>

<学生学号='72349876'>

<姓名>张三

<性别>男

<年龄>29

<学生学号='12345678'>

<姓名>李张林

<性别>男

<年龄>18

<学生学号='000'>

<姓名>张李号

<性别>女

<年龄>25

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1