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”标记包含的文本内容:CCTV5。“a2”标记包含的文本内容:子曰有朋自远方来,不亦乐乎。习题三1.答:一个规范的XML文件如果和某个DTD文件相关联,并遵守该DTD文件规定的约束条件,就称之为有效的XML文件。2.答:DTD文件的编码必须和其约束的XML文件的编码相一致。3.答:无关。4.答:(1)使用SYSTEM文档类型声明的格式:DOCTYPE根标记的名称SYSTEMDTD文件的URI(2)使用PUBLIC文档类型声明的格式:!DOCTYPE根标记的名称PUBLIC正式公用标识符DTD文件的URI5.答:一定。6.答:(1)约束标记“张三”必须有“学号”属性(2)约束标记“张三”必须有“学号”属性,而且学号的属性值是固定的220123。(3)约束标记“张三”可以有也可以没有“学号”属性。7.答:ID类型的属性的属性值具有互斥性,即所有ID类型的属性的属性值必须互不相同。8.答:不合理。9.答:(1)、(3)和(4)。10.答,B.xml不是有效的。将B.xml修改为有效:B.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPE成绩单SYSTEMA.dtd成绩单学生姓名张三/姓名成绩优秀/成绩/学生学生姓名李四/姓名成绩良好/成绩/学生/成绩单习题四1.答:一个返回子孙节点,而另一个只返回子节点:(1)getElementsByTagName(Stringname):返回一个NodeList对象,该对象由当前节点的Element类型子孙节点组成,这些子孙节点的名字由参数name指定(2)getChildNodes():节点调用该方法返回一个由当前节点的所有子节点组成的NodeList对象。2.答:分别是DocumentType类型和Element类型。3.JAXPXiti5.javaimportorg.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;ksize;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.javaimportorg.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;ksize;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)对应着价格标记,且“价格”标记含有的数字文本的值大于396。3.答:(1)【结果1】:A1001定单的总额:(2)【结果2】:40.0(3)【结果3】:4(4)【结果4】:1004.答:Xiti8.javaimportjavax.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);}}}5.答:Student.xml?xmlversion=1.0encoding=UTF-8?学生列表学生学号='72349876'姓名张三/姓名性别男/性别