XML基础教程课后习题解答.docx
《XML基础教程课后习题解答.docx》由会员分享,可在线阅读,更多相关《XML基础教程课后习题解答.docx(15页珍藏版)》请在冰豆网上搜索。
![XML基础教程课后习题解答.docx](https://file1.bdocx.com/fileroot1/2022-10/28/07ccaaa8-54f9-42d0-944c-434387885365/07ccaaa8-54f9-42d0-944c-4343878853651.gif)
XML基础教程课后习题解答
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”标记包含的文本内容:
子曰"有朋自远方来,不亦乐乎"。
习题三1.答:
一个规范的XML文件如果和某个DTD文件相关联,并遵守该DTD文件规定的约束条件,就称之为有效的XML文件。
2.答:
DTD文件的编码必须和其约束的XML文件的编码相一致。
3.答:
无关。
4.答:
(1)使用SYSTEM文档类型声明的格式:
(2)使用PUBLIC文档类型声明的格式:
DOCTYPE根标记的名称PUBLIC"正式公用标识符""DTD文件的URI">
5.答:
一定。
6.答:
(1)约束标记“张三”必须有“学号”属性
(2)约束标记“张三”必须有“学号”属性,而且学号的属性值是固定的******。
(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">
<成绩单>
<学生>
<姓名>张三姓名>
<成绩>优秀成绩>
学生>
<学生>
<姓名>李四姓名>
<成绩>良好成绩>
学生>
成绩单>
习题四
1.答:
一个返回子孙节点,而另一个只返回子节点:
(1)getElementsByTagName(Stringname):
返回一个NodeList对象,该对象由当前节点的Element类型子孙节点组成,这些子孙节点的名字由参数name指定
(2)getChildNodes():
节点调用该方法返回一个由当前节点的所有子节点组成的NodeList对象。
2.答:
分别是DocumentType类型和Element类型。
3.
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;
}
}
习题五:
DOM解析器的核心是在内存中建立和XML文件相对应的树形结构数据,如果XML文件较大,相应的Document对象就要占用较多的内存空间;SAX解析器不在内存中建立和XML文件相对应的树形结构数据,和DOM解析器相比,SAX解析器占有的内存少。
1.答:
不报告。
(这个答案不知道)
2.答:
uri和localName的取值是空字符组成的串,即uri="",localName="",参数qName取值是标记名称,atts是标记的所有属性的集合。
3.答:
当忽略标记之间形成的空白区域时。
4.答:
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.答:
Element类型节点对应XML中的标记。
2.答:
(1)按顺序对应着第一个名字是“教室”的标记中的第一个名字是“桌子”标记的“价格”标记。
(2)对应着具有属性number,属性值是02、名字为“桌子”的标记,而且这些桌子标记有子标记“价格”,而且价格包含的文本是数字且值大于等于360。
(3)对应“教室”的属性。
(4)number属性所在的“教室”节点。
(5)109
(6)396,267
(7)对应着“教室”标记,具教室标记有孙标记“价格”,且“价格”标记含有的数字文本的值大于390,即是第2个“教室”标记。
(8)对应着价格标记,且“价格”标记含有的数字文本