XML技術(shù)應(yīng)用第二版習(xí)題附答案_第1頁
XML技術(shù)應(yīng)用第二版習(xí)題附答案_第2頁
XML技術(shù)應(yīng)用第二版習(xí)題附答案_第3頁
XML技術(shù)應(yīng)用第二版習(xí)題附答案_第4頁
XML技術(shù)應(yīng)用第二版習(xí)題附答案_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第1章XML概述1.1什么是SGML?什么是XML?1.2 XML有哪些特性和優(yōu)點(diǎn)?1.3簡述XML的處理過程。1.4 XML有哪些設(shè)計目標(biāo)?1.5創(chuàng)建一個簡單的XML文檔,并為該文檔添加一個簡單的樣式表。第2章XML語法5.1 XML聲明都包含哪些內(nèi)容?哪些是必需的?哪些是可選的?5.2 XML的屬性與HTML的屬性在語法上有什么區(qū)別?5.3 XML預(yù)定義了哪些實(shí)體引用?5.4找出下面代碼中的錯誤:GermanyJoachimLoew!-Notsureabout-ManuelNeuerPhilippLahmThomasMullerMiroslavKlose第3章文檔類型定義9.1什么是DTD

2、?談?wù)剬TD的理解。9.2 DTD的聲明方式有哪些?9.3元素的內(nèi)容可以分為哪幾類?9.4屬性設(shè)置的默認(rèn)值有哪些?它們的含義各是什么?9.5使用外部DTD的聲明,為例2.8創(chuàng)建一個DTD文檔。9.6為一個XML文檔創(chuàng)建外部DTD。該XML文檔的結(jié)構(gòu)要求如下:(1)根元素名稱為Library。1.%2 Library必須包含2個元素:Book和Member,分別表示書的詳細(xì)信息和發(fā)行人。2.%2Book必須包含一個BookId屬性。所有其它的元素,例如Title、AuthorPrice、Publisher和Cost都只能作為Book的子元素。(4)元素Member包含Name和Address兩

3、個子元素。元素Name包含F(xiàn)irstName、MiddleName和LastName三個子元素。元素Address包含HouseNumber、StreetCity三個子元素。第4章命名空間和XMLSchema1用xmlns屬性定義命名空間時,前綴有什么作用?1怎樣定義和使用默認(rèn)的命名空間?1XMLSchema相比DTD有哪些優(yōu)勢?1XMLSchema提供哪兩種方式來實(shí)現(xiàn)數(shù)據(jù)類型的定義?怎樣實(shí)現(xiàn)?1為下面的XML文檔創(chuàng)建XMLSchema描述文檔。?xmlversion=1.0encoding=UTF-8?網(wǎng)上書城xmlns:xsi=/2001/XMLSchema

4、-instancexmlns=http:/ Z|2|2。102!017102!017MarwgeruBntInfcjniHliunSystgnhMarwgeruBntInfcjniHliunSystgnh100100 曲R R0nol0nolnMMdogerreT|BUAAnMMdogerreT|BUAA6.6為例2.8編寫一個XSLT樣式表,盡量使用本章所介紹的內(nèi)容。第7章XQuery查詢語言什么是XQuery?它與XPath、XSLT有什么關(guān)系?什么是FLWOR表達(dá)式?XQuery中預(yù)聲明的命名空間限定前綴有哪些?XQuery更新功能能夠?qū)?jié)點(diǎn)執(zhí)行那些操作?針對例2.7的XML文檔,假設(shè)其

5、保存為match.xml,請寫出以下代碼的運(yùn)行結(jié)果。xqueryversion1.0encodingutf-8;declarevariable$xasxs:string:=Team;for$teamat$posindoc(match.xml)/Matches/Match/Teamorderby$posdescendingreturn(string-join(string($x),string($pos),-),$team)第8章在XML中使用鏈接XML中的鏈接分為哪個兩部分?它們有什么區(qū)別?在設(shè)計XLink時應(yīng)該注意哪些問題?使用簡單鏈接修改下面的XML文檔片段,使其Title元素包含指向li

6、nk元素內(nèi)容的鏈接。德國勝阿卞g廷奪第4冠格策替補(bǔ)加時絕殺http:/ 它可以控制元素、 屬性、 實(shí)體等的格式, 也可以規(guī)定哪些可以在文檔中出現(xiàn)而哪些不可以。答案:DTD的聲明包括內(nèi)部聲明(即在XML文檔的內(nèi)部聲明DTD)和外部聲明(即在XML文檔中引用已經(jīng)編寫好的獨(dú)立的DTD文件),也可以兩種方式同時使用。答案:元素的內(nèi)容可以分為可解析的文本(#PCDATA)、空元素、子元素、任意內(nèi)容以及混合型內(nèi)容等。答案:屬性的默認(rèn)設(shè)置可以包含4種方式,除了設(shè)定默認(rèn)值之外,還包括對屬性取值的要求,這些要求可以分為3類:#REQUIRED、#IMPLIED、#FIXED。其中#REQUIRED表示該屬性在元

7、素中必不可少,#IMPLIED表示該屬性在包含它的元素中可以出現(xiàn),也可以不出現(xiàn),#FIXED表示該屬性的取值保持不變,而且必須指定該屬性的默認(rèn)取值,如果在包含它的元素的實(shí)例中沒有出現(xiàn)該屬性,元素就自動將該默認(rèn)值作為屬性值。答案略。答案:|第4章命名空間和XMLSchema答案:在使用xmlns屬性定義命名空間時,使用前綴可以在多個來源中混合使用不同命名空間中的名稱。答案:默認(rèn)命名空間聲明是一個屬性聲明,該屬性聲明的名稱是xmlns。其值是作為命名空間名稱的命名空間URI。默認(rèn)命名空間聲明指定其作用域中所有不帶前綴的元素名稱都來自聲明的命名空間。答案:與DTD相比,XMLSchema具有以下優(yōu)勢

8、:XMLSchema本身是XML文檔。它繼承了XML的自描述性和可擴(kuò)展性。許多XML編輯工具、API開發(fā)包、XML語法分析器可以直接的應(yīng)用到XMLSchema,而不需要修改。用戶也可以很方便的理解XMLSchema的內(nèi)容,而不像DTD那樣需要學(xué)習(xí)一種新的語法規(guī)則。同時,由于XML本身嚴(yán)格的語法要求,使得XMLSchema也有著同樣的合法性驗(yàn)證機(jī)制。XMLSchema支持更豐富的數(shù)據(jù)類型。DTD提供的數(shù)據(jù)類型只有CDATA、NMTOKEN、NMTOKENS等。而XMLSchema內(nèi)置了多種數(shù)據(jù)類型,如string、long、int、double等常用的數(shù)據(jù)類型,還支持用戶自定義類型。XMLSch

9、ema可以引入命名空間,這更增強(qiáng)了XMLSchema的通用性。XMLSchema的應(yīng)用范圍比DTD要廣??傊?,XMLSchema比DTD更具有表現(xiàn)力,能夠更好地滿足不同領(lǐng)域的應(yīng)用需求。答案:XMLSchema提供了兩種方式實(shí)現(xiàn)數(shù)據(jù)類型的定義:一種是簡單類型(simpleType),即在XMLSchema內(nèi)置的數(shù)據(jù)類型基礎(chǔ)上,或其它由XMLSchema內(nèi)置的數(shù)據(jù)類型繼承或定義所得到的簡單類型基礎(chǔ)上,定義新的數(shù)據(jù)類型。另一種是復(fù)雜類型(complexType),該方法提供了一種功能強(qiáng)大的復(fù)雜數(shù)據(jù)類型定義機(jī)制,可以實(shí)現(xiàn)包括結(jié)構(gòu)描述在內(nèi)的復(fù)雜的數(shù)據(jù)類型。答案:第5章文檔對象模型答案:DOM代表Docu

10、mentObjectModel,即文檔對象模型,它是一組獨(dú)立于語言和平臺的應(yīng)用程序編程接口,它能夠描述如何訪問和操縱存儲在結(jié)構(gòu)化XML和HTML文檔中的信息。DOM為樹狀結(jié)構(gòu),元素、屬性、注釋、文本內(nèi)容等都是DOM樹狀結(jié)構(gòu)的節(jié)點(diǎn)。DOM的工作方式是:首先將XML文檔一次性的裝入內(nèi)存,然后對文檔進(jìn)行解析,根據(jù)文檔中定義的元素、屬性、注釋、處理指令等不同的內(nèi)容進(jìn)行分解,以“節(jié)點(diǎn)樹”的形式在內(nèi)存中創(chuàng)建XML文件的表示,即文檔對象模型。文檔中每個節(jié)點(diǎn)對應(yīng)著模型中一個對象。然后根據(jù)對象提供的編程接口,在應(yīng)用程序中來訪問XML文檔進(jìn)而操作XML文檔。答案:Node接口的appendChild()方法是在該

11、節(jié)點(diǎn)的所有子節(jié)點(diǎn)之后追加一個子節(jié)點(diǎn),而insertChild()方法是在該節(jié)點(diǎn)的所有子節(jié)點(diǎn)前插入一個子節(jié)點(diǎn)。答案:刪除節(jié)點(diǎn)可以使用Node接口的removeChild()方法。它將刪除該節(jié)點(diǎn)的指定子節(jié)點(diǎn),指定子節(jié)點(diǎn)的所有子節(jié)點(diǎn)也將從文檔中刪除。該方法實(shí)際上并沒有從內(nèi)存中刪除(Delete)指定節(jié)點(diǎn),而只是移除(Remove)。答案:解析該XML文件的Java代碼如下, 命名為ParseSimpleXml.java(假設(shè)5.4.xml和ParseSimpleXml.java在同一個目錄下)。importjavax.xml.parsers.DocumentBuilder;importjavax.x

12、ml.parsers.DocumentBuilderFactory;importorg.w3c.dom.Document;importorg.w3c.dom.Element;importorg.w3c.dom.Node;importorg.w3c.dom.NodeList;publicclassParseSimpleXmlElementroot=null;publicParseSimpleXml()tryDocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factor

13、y.newDocumentBuilder();Documentdoc=builder.parse(5.4.xml);doc.normalize();root=doc.getDocumentElement();catch(Exceptione)System.out.println(e);publicvoidparse()System.out.println();System.out.println();NodeListchildren=root.getChildNodes();for(inti=0;ichildren.getLength();i+)Nodechild=children.item(

14、i);if(child.getNodeType()=Node.ELEMENT_NODE)System.out.print();System.out.print(child.getFirstChild().getNodeValue();System.out.println();System.out.println();publicstaticvoidmain(Stringargs)ParseSimpleXmlparseSimpleXml=newParseSimpleXml();parseSimpleXml.parse();答案:假設(shè)新文檔命名為5.5.xml。Java程序如下所示。importj

15、avax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.transform.Transformer;importjavax.xml.transform.TransformerFactory;importjavax.xml.transform.dom.DOMSource;importjavax.xml.transform.stream.StreamResult;importorg.w3c.dom.Attr;importorg.w3c.dom.Document;i

16、mportorg.w3c.dom.Element;publicclassCreateSimpleXmlpublicstaticvoidmain(String口args)tryDocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();Documentdoc=builder.newDocument();Elementteam=doc.createElement(Team);ElementteamMember=doc.cr

17、eateElement(TeamMember);Elementempno=doc.createElement(Empno);AttrempnoValue=doc.createAttribute(value);empno.setAttribute(empnoValue.getNodeName(),30772);Elementname=doc.createElement(Name);AttrnameValue=doc.createAttribute(value);name.setAttribute(nameValue.getNodeName(),ManjeetSingh);Elementdesig

18、nation=doc.createElement(Designation);Attrdesignationvalue=doc.createAttribute(value);designation.setAttribute(designationValue.getNodeName(),TeamLeader.);team.appendChild(teamMember);teamMember.appendChild(empno);teamMember.appendChild(name);teamMember.appendChild(designation);doc.appendChild(team)

19、;TransformerFactorytFactory=TransformerFactory.newInstance();Transformertransformer=tFactory.newTransformer();DOMSourcesource=newDOMSource(doc);StreamResultresult=newStreamResult(newjava.io.File(4.5.xml);transformer.transform(source,result);catch(Exceptione)e.printStackTrace();第6章可擴(kuò)展的樣式語言答案:XSL代表ext

20、ensibleStylesheetLanguage,即可擴(kuò)展樣式表語言。它包括XSLT(XSLTransformations)XPath(XML路徑語言)和XSL-FO(XSLFormattingObjects)。XSLT可以將一個XML文檔轉(zhuǎn)換成另一個XML文檔(有時甚至是HTML文檔),同時可以完全忽略格式化對象。XPath是一門在XML文檔中查找信息的語言,并且XQuery和XPointer都構(gòu)建于XPath表達(dá)之上。XSL-FO根據(jù)數(shù)據(jù)的值對XML數(shù)據(jù)進(jìn)行格式化,可以精確設(shè)置屏幕顯示格式或打印格式,而沒有必要在XML文檔上使用XSL轉(zhuǎn)換。答案:xsl:value-of和xsl:for-

21、each都會輸出與模式匹配的節(jié)點(diǎn),但如果所匹配的節(jié)點(diǎn)多于一個,xsl:value-of只會顯示第一個,而xsl:for-each可以顯示所有匹配的節(jié)點(diǎn)。答案:滿足題目要求的XPath的完整形式如下。child:paraposition()1答案:fo:simple-page-master頁面模板包含多個區(qū),可以用fo:region-body、fo:region-before、fo:region-after、fo:region-start、fo:region-end元素來分另1J限定頁面主體、頁面頁眉、頁面頁腳、左側(cè)欄、右側(cè)欄。答案:相應(yīng)的XSLT文檔如下:|ObjectivePersonalI

22、nformationName:Sex:|Age:Major:School:Tel:-ICell:Degree:EducationBackgroundNo.Time|MajorDepartmentSchool|答案略。第7章XQuery查詢語言答案:XQuery即XMLQuery,是W3c制定的一套標(biāo)準(zhǔn),是用來從類XML文檔中提取信息的查詢語言。這里的類XML文檔可以理解成一切符合XML數(shù)據(jù)模型和接口的實(shí)體,既可以是標(biāo)準(zhǔn)XML格式的文本文件,也可以是包含XML形態(tài)數(shù)據(jù)的數(shù)據(jù)庫。XQuery對于XML的作用類似于結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)對于關(guān)系型數(shù)據(jù)

23、庫的作用。XQuery與XPath和XSLT的關(guān)系十分密切。一方面,從XPath角度來看,XQuery被構(gòu)建在XPath表達(dá)式之上,XQuery和XPath使用相同的數(shù)據(jù)模型,并支持相同的函數(shù)和運(yùn)算符,他們的語法和語言描述也是同源的以保證統(tǒng)一性。另一方面,從XSLT角度來看,XQuery和XSLT都是構(gòu)建在XPath之上,都可以用于提取XML中的數(shù)據(jù),因此兩者在功能方面有許多重疊的地方。但是需要注意XQuery和XSLT的關(guān)鍵區(qū)別:XQuery主要用于從類XML文檔中提取數(shù)據(jù),并可以將提取的數(shù)據(jù)放入任意的文檔片段之中,XQuery采用全新的查詢語法;而XSLT主要用于將XML轉(zhuǎn)換為其他文檔,具

24、有內(nèi)置的遍歷引擎,默認(rèn)情況下會處理整個文檔,XSLT仍然采用XML語法。答案:FLWOR表達(dá)式是XQuery中最常用也是功能最強(qiáng)大的一種表達(dá)式,該表達(dá)式的名字來自for、let、whereorderby和return等子句的首字母縮寫。FLWOR表達(dá)式的完整語法格式如下。for子句|let子句where子句orderby子句return子句其中for子句和let子句可以出現(xiàn)一次或多次,但必須至少出現(xiàn)一次,表示遍歷或者定義。where子句用于對結(jié)果進(jìn)行過濾;orderby子句用于對結(jié)果進(jìn)行排序;return子句用于指定返回表達(dá)式。答案:XQuery預(yù)聲明了一些限定前綴,以方便使用,使用這些前綴時無需再聲明,包括:?xml=/XML/1998/namespace;?xs=/2001/XMLS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論