版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
XMLStevenHolzner,SamsTeachYourselfXMLin21Days,ThirdEdition.2003.1分布式系統(tǒng)-XML1.XML基礎2分布式系統(tǒng)-XMLMarkupLanguages<HTML><HEAD><TITLE>HelloFromHTML</TITLE></HEAD><BODY><CENTER><H1>AnHTMLDocument</H1></CENTER>ThisisanHTMLdocument!</BODY></HTML>標記是文檔中數(shù)據(jù)的描述和解釋3分布式系統(tǒng)-XMLXMLeXtensibleMarkupLanguage元語言,創(chuàng)建標記語言的語言4分布式系統(tǒng)-XML<?xmlversion=“1.0”?><PersonList
Type=“Student”Date=“2002-02-02”><Title
Value=“StudentList”/><Person>………</Person><Person>………</Person></PersonList>ElementsarenestedRootelementcontainsallothers
Element(ortag)namesExampleelementsRootelementEmptyelement
attributesdeclaration5分布式系統(tǒng)-XMLMoreTerminology<PersonName=“John”Id=“111111111”>Johnisanicefellow<Address><Number>21</Number><Street>MainSt.</Street></Address>………</Person>OpeningtagClosingtag:WhatisopenmustbeclosedNestedelement,childofPersonParentofAddress,Ancestorofnumber“standalone”text,notusefulasdataChildofAddress,DescendantofPersonContentofPerson6分布式系統(tǒng)-XMLIE中瀏覽XML文檔7分布式系統(tǒng)-XMLAnXMLDocumentUsingaStyleSheet<?xmlversion="1.0"?><?xml-stylesheettype="text/css"href="ch01_04.css"?><PersonListType="Student"Date="2002-02-02"><TitleValue="StudentList"/><PersonName="John"Id="111111111"> Johnisanicefellow <Address><Number>21</Number><Street>MainSt.</Street> </Address> ...</Person><Person>...</Person></PersonList>8分布式系統(tǒng)-XMLch01_04.cssPerson{display:block;font-size:18pt;color:#0000ff;text-align:left}9分布式系統(tǒng)-XML使用JavaScript抽取數(shù)據(jù)<?xmlversion="1.0"encoding="UTF-8"?><?xml-stylesheettype="text/css"href="ch01_04.css"?><document>
<heading>HelloFromXML</heading><message>ThisisanXMLdocument!</message></document>10分布式系統(tǒng)-XML使用JavaScript抽取數(shù)據(jù)<HTML><HEAD><TITLE>RetrievingdatafromanXMLdocument</TITLE><XMLID="firstXML"SRC="ch01_02.xml"></XML><SCRIPTLANGUAGE="JavaScript">functiongetData(){xmldoc=document.all("firstXML").XMLDocument;nodeDoc=xmldoc.documentElement;nodeHeading=nodeDoc.firstChild;outputMessage="Heading:"+nodeHeading.firstChild.nodeValue;message.innerHTML=outputMessage;}</SCRIPT></HEAD>11分布式系統(tǒng)-XML使用JavaScript抽取數(shù)據(jù)<BODY><CENTER><H1>RetrievingdatafromanXMLdocument</H1><DIVID="message"></DIV><P><INPUTTYPE="BUTTON"VALUE="Readtheheading"ONCLICK="getData()"></CENTER></BODY></HTML>12分布式系統(tǒng)-XML使用JavaScript抽取數(shù)據(jù)13分布式系統(tǒng)-XML使用Java從XML文檔中抽取數(shù)據(jù)importjavax.xml.parsers.*;importorg.w3c.dom.*;importjava.io.*;publicclassch01_06{staticpublicvoidmain(String[]argv){try{DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderdb=null;try{db=dbf.newDocumentBuilder();}catch(ParserConfigurationExceptionpce){}Documentdoc=null;doc=db.parse("ch01_02.xml");14分布式系統(tǒng)-XML使用Java從XML文檔中抽取數(shù)據(jù)for(Nodenode=doc.getDocumentElement().getFirstChild();node!=null;node=node.getNextSibling()){if(nodeinstanceofElement){if(node.getNodeName().equals("heading")){StringBufferbuffer=newStringBuffer();for(Nodesubnode=node.getFirstChild();subnode!=null;subnode=subnode.getNextSibling()){if(subnodeinstanceofText){buffer.append(subnode.getNodeValue());}}System.out.println(buffer.toString());}}}}catch(Exceptione){e.printStackTrace();}}}15分布式系統(tǒng)-XML使用Java從XML文檔中抽取數(shù)據(jù)>javach01_06HelloFromXML16分布式系統(tǒng)-XMLWell-formedXMLDocumentsMusthavearootelementEveryopeningtagmusthavematchingclosingtagElementsmustbeproperlynested<foo><bar></foo></bar>isano-noAnattributenamecanoccuratmostonceinanopeningtag.Ititoccurs,Itmusthaveavalue(booleanattrs,likeinHTML,arenotallowed)Thevaluemustbequoted(with“or‘)XMLprocessorsarenotsupposedtotryandfixill-formeddocuments(unlikeHTMLbrowsers)17分布式系統(tǒng)-XMLValidXMLDocuments<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEdocument[<!ELEMENTdocument(heading,message)><!ELEMENTheading(#PCDATA)><!ELEMENTmessage(#PCDATA)>]><document><heading>HelloFromXML</heading><message>ThisisanXMLdocument!</message></document>18分布式系統(tǒng)-XMLValidXMLDocumentAvalidXMLdocumentisdefinedbytheW3Casawell-formedXMLdocumentwhichalsoconformstotherulesofaDocumentTypeDefinition(DTD)oranXMLSchema/ski:m?/(XSD)19分布式系統(tǒng)-XMLXML應用XML用于存儲、傳輸、結構化數(shù)據(jù)純文本格式使它容易被在互聯(lián)網(wǎng)上傳輸并被不同平臺上的應用所處理過去5年中,已經(jīng)出現(xiàn)了上百種XML子語言20分布式系統(tǒng)-XML使用MathML顯示4x2–5x+6=0<?xmlversion="1.0"?><mathxmlns=""><mrow><mrow><mn>4</mn><mo>⁢</mo><msup><mi>x</mi><mn>2</mn></msup><mo>-</mo><mrow><mn>5</mn><mo>⁢</mo><mi>x</mi></mrow><mo>+</mo><mn>6</mn></mrow><mo>=</mo><mn>0</mn></mrow></math>21分布式系統(tǒng)-XML在Amaya瀏覽器中顯示MathML文檔22分布式系統(tǒng)-XMLXHTMLExtensibleHypertextMarkupLanguage更加嚴格允許增加自己的標記HTML4.01(當前版本)23分布式系統(tǒng)-XMLAnXHTMLDocument<?xmlversion="1.0"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><htmlxmlns=""xml:lang="en"lang="en"><head><title>AnXHTMLPage</title></head><body><h1>WelcometoXHTML!</h1><center><p>ThisisanXHTMLdocument.</p><p>Prettycool,eh?</p></center></body></html>24分布式系統(tǒng)-XML在IE中顯示25分布式系統(tǒng)-XMLAnSVGDocument<?xmlversion="1.0"encoding="UTF-8"?><svgxmlns=""><title>SVGExample</title><ellipsecx="200"cy="100"rx="100"ry="60"style="fill:lightblue;stroke:blue;stroke-width:6"/></svg>26分布式系統(tǒng)-XML練習validXML文檔一定是well-formed嗎?well-formedXML文檔一定是valid嗎?27分布式系統(tǒng)-XML編輯XML文檔XML編輯器XMLSpyVisualStudioXMLDesignerXRayXML瀏覽器IE,MostpowerfulgeneralJumbo,CMLbrowser28分布式系統(tǒng)-XMLJumbo29分布式系統(tǒng)-XMLXMLValidatorsMakesureitiswellformedandvalidScholarlyTechnologyGroup'svalidatorMicrosoft'sVisualStudio.NET30分布式系統(tǒng)-XMLerror.xml<?xmlversion="1.0"encoding="UTF-8"?><?xml-stylesheettype="text/css"href="ch01_04.css"?><!DOCTYPEdocument[<!ELEMENTdocument(heading,message)><!ELEMENTheading(#PCDATA)><!ELEMENTmessage(#PCDATA)>]><document><heading>HelloFromXML<message></heading>ThisisanXMLdocument!</message></document>31分布式系統(tǒng)-XML32分布式系統(tǒng)-XMLXMLvalidationinVisualStudio.NET33分布式系統(tǒng)-XML建立一個完整的XML文檔<?xmlversion="1.0"encoding="UTF-8"?><document><heading>HelloFromXML</heading><message>ThisisanXMLdocument!</message></document>34分布式系統(tǒng)-XMLXML文檔PrologsXMLdeclarationsProcessinginstructionsElementsandattributesCommentsCDATAsectionsEntities35分布式系統(tǒng)-XML字符編碼問題ASCII僅有256個字符Chinese,Armenian,Hebrew,Thai,Tibetan從數(shù)量上、通用上,ASCII不能在Web上使用Unicode(http://),65,536個字符前256個對應ASCII但讓所有的軟件轉(zhuǎn)去支持Unicode太困難UCSTransformationFormat-8(UTF-8)36分布式系統(tǒng)-XMLUTF-8所有ASCII字符的編碼保持不變(8bit)其它Unicode字符使用2字節(jié),直至6字節(jié)編碼W3CrequiresallXMLprocessorstosupportbothUTF-8,UTF-16大部分支持UTF-837分布式系統(tǒng)-XML字符實體引用<?xmlversion="1.0"encoding="UTF-8"?><document><heading>HelloFromXML</heading><message>Thistextisinsidea<message>element.</message></document>38分布式系統(tǒng)-XML字符實體引用39分布式系統(tǒng)-XML字符實體引用<—Replacedwith<>—Replacedwith>&—Replacedwith&"—Replacedwith"'—Replacedwith'40分布式系統(tǒng)-XML實體實體是一大段文本的別名假如你為你的信件署名定義了一個實體lettersign,它代表下面這一大段文本:
張三
某網(wǎng)絡公司銷售部門
北京市海淀區(qū)中關村88號,10000041分布式系統(tǒng)-XML實體〈郵件〉
〈收件人〉李四〈/收件人〉
〈主題〉hello〈/主題〉
〈正文〉晚上吃飯!&lettersign;〈/正文〉
</郵件〉42分布式系統(tǒng)-XML一般實體和參數(shù)實體一般實體聲明:<!ENTITYlettersign
"張三
某網(wǎng)絡公司銷售部門
北京市海淀區(qū)中關村88號,100000"〉參數(shù)實體聲明:<!ENTITY%實體名"文本內(nèi)容"〉43分布式系統(tǒng)-XML實體引用&<實體名>;注意:在引用XML實體之前,必須已經(jīng)在XML文件中對此實體進行過聲明;在實體引用中不能出現(xiàn)空格。也就是說,&lettersign;和&letterhead;的用法都會引起錯誤。盡管在一個實體中可以再引用其它實體,但是不能出現(xiàn)循環(huán)引用。也就是說,一個實體不能引用它自己;同樣,也不能出現(xiàn)實體A引用實體B,然后實體B再反過來引用實體A的情況。實體引用不能在DOCTYPE聲明中出現(xiàn)。實體引用的文本必須是形式良好的XML。44分布式系統(tǒng)-XML<?xmlversion="1.0"?>
<!DOCTYPE聯(lián)系人列表[
<!ENTITYA公司地址“北京市五街1234號”>
<!ENTITYB公司地址“上海南京路9876號”〉
]><聯(lián)系人列表>
<聯(lián)系人>
<姓名>張三</姓名>
<公司>>A公司</公司>>
<地址>&A公司地址</地址>
</聯(lián)系人>
<聯(lián)系人>
<姓名gt;李四</姓名>
<公司>B公司</公司>
<地址>&B公司地址〈/地址〉
</聯(lián)系人>
<聯(lián)系人>
<姓名>王五</姓名>>
<公司>B公司</公司>
<地址>&B公司地址〈/地址〉
</聯(lián)系人>
</聯(lián)系人列表>一旦哪個公司搬家了,只須改變實體聲明中有關該公司的地址,所有這個公司的聯(lián)系人的地址也就都改過來了45分布式系統(tǒng)-XML空白Spaces,carriagereturns,linefeeds,andtabsarealltreatedaswhitespace<?xmlversion="1.0"encoding="UTF-8"?><document><heading>HelloFromXML</heading><message>ThisisanXMLdocument!</message></document><?xmlversion="1.0"encoding="UTF-8"?><document>heading>HelloFromXML</heading><message>ThisisanXMLdocument!</message></document>46分布式系統(tǒng)-XMLPrologs(序言)XMLdeclarationsXMLcommentsprocessinginstructionswhitespacedoctypedeclarations47分布式系統(tǒng)-XML<?xmlversion="1.0"encoding="UTF-8"?><!--Herecomesthedocumentelement...--><?xml-stylesheettype="text/css"href="ch_02.css"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price)><!ELEMENTproduct(#PCDATA)><!ELEMENTid(#PCDATA)><!ELEMENTprice(#PCDATA)>]><document><employeestatus="retired">>
<name><lastname>Kelly</lastname><firstname>Grace</firstname>
</name><hiredate>October15,2005</hiredate><projects><project><product>Printer</product>…</document>XMLDeclarationXMLCommentsProcessingInstruction由處理器定義RootElementElement屬性48分布式系統(tǒng)-XMLCDATACDATAstandsforcharacterdata,PCDATAstandsforparsedcharacterdata.<![CDATA[……]]>49分布式系統(tǒng)-XML<?xmlversion="1.0"standalone="yes"?><document><text>Here'showtheelementstarts:<![CDATA[<employeestatus="retired"><name><lastname>Kelly</lastname><firstname>Grace</firstname></name><hiredate>October15,2005</hiredate><projects><project><product>Printer</product><id>111</id><price>$111.00</price></project>...]]></text></document>50分布式系統(tǒng)-XMLInternetExplorertreatsthisCDATAsectionasunparsedtext51分布式系統(tǒng)-XML練習一個文本編輯器保存XML文檔時,并不提示字符集。該編輯器是否可用?把文本數(shù)據(jù)“Thisisa<message>element”包含在元素<message>中,怎樣做才不會迷惑XMLprocessor?XMLprolog可以包含哪些項目?52分布式系統(tǒng)-XMLXMLNamespaces解決文檔內(nèi)和文檔間名字沖突的機制NamespacedeclarationNamespace–符號串,通常為URLPrefix–名字空間的縮寫,相當于別名Actualname(elementorattribute)–prefix:nameDeclarations/prefixes作用范圍
(scope)與begin/end類似Example:<itemxmlns=“http://”xmlns:toy=“http://”><name>backpack</name><feature><toy:item><toy:name>cyberpet</toy:name></toy:item></feature></item>Defaultnamespacetoynamespacereservedkeyword53分布式系統(tǒng)-XMLNamespaces(續(xù))Scopesofdeclarationsarecolor-coded:<itemxmlns=“http://”xmlns:cde=“http://”><name>…</name><feature><cde:item><cde:name>…</cde:name><cde:item></feature><itemxmlns=“http:///”xmlns:cde=“http://”><name>…</name><cde:name>…</cde:name></item></item>Newdefault;overshadowsolddefaultRedeclarationofcde;overshadowsolddeclaration54分布式系統(tǒng)-XMLNamespaces(續(xù))xmlns=“/bar”并不意味著此URL上有一個文檔,這種格式僅僅是個約定俗成。一個namespace僅僅是個標識符一些前綴已經(jīng)成為"標準"。E.g.,xsdforxslforEtc.55分布式系統(tǒng)-XMLValid&DTD<?xmlversion="1.0"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price)><!ELEMENTproduct(#PCDATA)><!ELEMENTid(#PCDATA)><!ELEMENTprice(#PCDATA)>]>56分布式系統(tǒng)-XML<document><employee><name><lastname>Kelly</lastname><firstname>Grace</firstname></name><hiredate>October15,2005</hiredate><projects><project><product>Printer</product><id>111</id><price>$111.00</price></project><project><product>Laptop</product><id>222</id><price>$989.00</price></project></projects></employee>57分布式系統(tǒng)-XML
<employee><name><lastname>Grant</lastname><firstname>Cary</firstname></name><hiredate>October20,2005</hiredate><projects><project><product>Desktop</product><id>333</id><price>$2995.00</price></project><project><product>Scanner</product><id>444</id><price>$200.00</price></project></projects></employee>
<employee><name><lastname>Gable</lastname><firstname>Clark</firstname></name><hiredate>October25,2005</hiredate><projects><project><product>Keyboard</product><id>555</id><price>$129.00</price></project><project><product>Mouse</product><id>666</id><price>$25.00</price></project></projects></employee></document>58分布式系統(tǒng)-XML在NetBeans中新建XML文檔59分布式系統(tǒng)-XML在NetBeans中新建XML文檔60分布式系統(tǒng)-XMLCheckXMLXMLcheckingstarted.Checking...XMLcheckingfinished.61分布式系統(tǒng)-XMLValidateXMLXMLvalidationstarted.Checking...XMLvalidationfinished.62分布式系統(tǒng)-XMLValidatinghttp://63分布式系統(tǒng)-XMLValidating制造一個錯誤,比如<mame>改為<xingming>重新使用ValidateXML命令64分布式系統(tǒng)-XMLDocumentTypeDefinition(DTD)DTD
定義了XML文檔的語法DTD是可選的如果文檔符合它的DTD,該文檔就稱為
valid65分布式系統(tǒng)-XMLDTD(續(xù))DTD作為文檔的一部分:<?xmlversion=“1.0”?standalone=“yes”><!DOCTYPEcontact[………]><contact>………</contact>66分布式系統(tǒng)-XMLDTD(續(xù))DTD作為單獨的文件:<?xmlversion=“1.0”?standalone=“no”><!DOCTYPEContactSYSTEM"http://"><contact>………</contact>67分布式系統(tǒng)-XML單獨的DTD文件<!ELEMENTcontact(employee)*><!ELEMENTemployee(name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price)><!ELEMENTproduct(#PCDATA)><!ELEMENTid(#PCDATA)><!ELEMENTprice(#PCDATA)>68分布式系統(tǒng)-XMLDTD(續(xù))DTD作為單獨的文件:<?xmlversion=“1.0”?standalone=“no”><!DOCTYPEcontactSYSTEM"http://"><contact>………</contact><!DOCTYPEcontactSYSTEM“contact.dtd"><!DOCTYPEcontactSYSTEM“../dtds/contact.dtd">絕對路徑引用方式相對路徑引用方式:DTD與XML文檔同一路徑相對路徑引用方式:DTD與XML文檔相對路徑69分布式系統(tǒng)-XMLDTD(續(xù))system關鍵字主要用于引用一個作者或組織所編寫的眾多XML文件中通用的DTD。還存在一種外部DTD,它是一個由權威機構制訂的,提供給特定行業(yè)或公眾使用的DTD。因此,另一個引用外部DTD的辦法是使用關鍵字public,引用這一類公開給公眾使用的DTD例<!DOCTYPEcontactPUBLIC"-//DonaldDong//ContactData//CN""http://">根元素DTD名稱(所有者//類型//語言)DTD的URL70分布式系統(tǒng)-XMLDTD成分<!ELEMENTelt-name(…contents…)><!ATTLISTelt-nameattr-name
ID/IDREF/IDREFS#EMPTY/#IMPLIED/#REQUIRED
>注意:ELEMENT讀['?l?m?nt]ATTRIBUTE讀['?
tr?bjut]可選71分布式系統(tǒng)-XMLValid&DTD<?xmlversion="1.0"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(intern?,name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price|discountprice)><!ELEMENTproduct(#PCDATA)><!ELEMENTid(#PCDATA)><!ELEMENTprice(#PCDATA)><!ELEMENTinternEMPTY>]>根元素0個或多個子元素被分析的字符數(shù)據(jù)序列選擇空元素72分布式系統(tǒng)-XML子元素x+—x出現(xiàn)1次或多次.x*—x出現(xiàn)0次或多次.x?—x可選,不出現(xiàn)或出現(xiàn)一次.x,y—x的后繼是y.順序Sequencex|y—x或y—但不同時.Choice73分布式系統(tǒng)-XML順序<!ELEMENT聯(lián)系人(姓名,EMAIL)><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><聯(lián)系人><姓名>張三</姓名><EMAIL></EMAIL></聯(lián)系人><聯(lián)系人><EMAIL></EMAIL><姓名>張三</姓名></聯(lián)系人>74分布式系統(tǒng)-XML重復<!ELEMENT聯(lián)系人(姓名,EMAIL+)><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><聯(lián)系人><姓名>張三</姓名><EMAIL></EMAIL><EMAIL></EMAIL></聯(lián)系人><聯(lián)系人><姓名>張三</姓名></聯(lián)系人>75分布式系統(tǒng)-XML成組<!ELEMENT聯(lián)系人(姓名,EMAIL)+><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><聯(lián)系人><姓名>張三</姓名><EMAIL></EMAIL><姓名>李四</姓名><EMAIL></EMAIL></聯(lián)系人>76分布式系統(tǒng)-XML或:必取其一<!ELEMENT聯(lián)系人(姓名,電話|EMAIL+)><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><!ELEMENT電話(#PCDATA)><聯(lián)系人><姓名>張三</姓名><EMAIL></EMAIL></聯(lián)系人>77分布式系統(tǒng)-XML或<聯(lián)系人><姓名>張三</姓名></聯(lián)系人><聯(lián)系人><姓名>張三</姓名><EMAIL></EMAIL><電話>86268438</電話></聯(lián)系人>78分布式系統(tǒng)-XML混合元素既包括子元素又包括文字<?xmlversion="1.0"encoding="GB2312"standalone="yes"?><!DOCTYPECONTACTS[<!ELEMENT聯(lián)系人列表ANY><!ELEMENT聯(lián)系人(姓名|電話|EMAIL|#PCDATA)*><!ELEMENT姓名(#PCDATA)><!ELEMENT電話(#PCDATA)><!ELEMENTEMAIL(#PCDATA)>]><聯(lián)系人列表><聯(lián)系人><姓名>張三</姓名><電話></電話><EMAIL></EMAIL>
這是關于張三的信息
</聯(lián)系人></聯(lián)系人列表>79分布式系統(tǒng)-XML空元素<document><employee>
<intern/><name><lastname>Kelly</lastname><firstname>Grace</firstname></name>…80分布式系統(tǒng)-XMLDTD注意在定義元素時,ETD的順序是無關緊要的。因此
<!ELEMENT姓名(#PCDATA)><!ELEMENT聯(lián)系人列表ANY><!ELEMENT聯(lián)系人(姓名)>和
<!ELEMENT聯(lián)系人列表ANY><!ELEMENT聯(lián)系人(姓名)><!ELEMENT姓名(#PCDATA)>所定義的文件結構是完全相同的。81分布式系統(tǒng)-XMLDTD注意元素名的第一個字母必須是字母、或下劃線_、或冒號:后跟字母、數(shù)字、句號.、冒號、下劃線、連結號-的組合不能包含空白符,不能以“xml”開頭。82分布式系統(tǒng)-XML提問<!ELEMENTemployee(name+,hiredate?,projects*)>
83分布式系統(tǒng)-XML屬性<!ATTLIST元素名(屬性名屬性類型缺省值)*>84分布式系統(tǒng)-XML缺省值<!ATTLIST頁面作者姓名#CDATA#IMPLIED
年齡#CDATA#IMPLIED
聯(lián)系信息#CDATA#REQUIRED
網(wǎng)站職務#CDATA#FIXED"編輯"
個人愛好#CDATA"上網(wǎng)">85分布式系統(tǒng)-XML屬性取值約束REQUIREDIMPLIEDFIXED默認86分布式系統(tǒng)-XMLREQUIRED關鍵字REQUIRED說明XML文件中必須為這個屬性給出一個屬性值87分布式系統(tǒng)-XMLIMPLIED
當使用IMPLIED關鍵字時,XML分析器不再強行要求你在XML文件中給該屬性賦值而且也無須在DTD中為該屬性提供缺省值88分布式系統(tǒng)-XMLFIXED需要為一個特定的屬性提供一個缺省值并且不希望XML文件的編寫者把缺省值替代掉。89分布式系統(tǒng)-XML默認如果不使用上面任何一種關鍵字的話,該種屬性就是屬于這種類型。對于這種屬性,你需要在DTD中為它提供一個缺省值。而在XML文件中可以為該屬性給出新的屬性值來覆蓋事先定義的缺省值,也可以不另外給出屬性值90分布式系統(tǒng)-XML屬性類型CDATAEnumeratedIDIDREFIDREFSENTITYENTITIESNMTOKENNMTOKENSNOTATION91分布式系統(tǒng)-XMLCDATACDATA指的是純文本,即由字符、符號“&”、小于號“<”和引號“"”組成的字符串。當然,使用實體&代替“&”,<代替“<”,"代替“””。92分布式系統(tǒng)-XML枚舉<?xmlversion="1.0"encoding="GB2312"standalone="yes"?><!DOCTYPE購物籃[<!ELEMENT購物籃(肉)*><!ELEMENT肉EMPTY><!ATTLIST肉類型(雞肉|牛肉|豬肉|魚肉)"雞肉">]><購物籃><肉類型="魚肉"/><肉類型="牛肉"/><肉/></購物籃>93分布式系統(tǒng)-XMLIDID是用屬性值的方式為文件中的某個元素定義唯一標識的方法,它的作用類似于HTML文件中的內(nèi)部鏈接在一個文檔中,任何兩個元素的ID屬性值不同一個元素只能有一個ID屬性94分布式系統(tǒng)-XML<?xmlversion="1.0"encoding="GB2312"standalone="yes"?><!DOCTYPE聯(lián)系人列表[<!ELEMENT聯(lián)系人列表(聯(lián)系人)*><!ELEMENT聯(lián)系人(姓名,EMAIL)><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><!ATTLIST聯(lián)系人編號ID#REQUIRED>]><聯(lián)系人列表><聯(lián)系人編號="1"><姓名>張三</姓名><EMAIL></EMAIL></聯(lián)系人>95分布式系統(tǒng)-XMLIDREFIDREF類型允許一個元素的屬性使用文件中的另一個元素,方法就是把那個元素的ID標識值作為該屬性的取值存放多個其它元素的ID值,以空白分開96分布式系統(tǒng)-XML<?xmlversion="1.0"encoding="GB2312"standalone="yes"?><!DOCTYPE聯(lián)系人列表[<!ELEMENT聯(lián)系人列表(聯(lián)系人)*><!ELEMENT聯(lián)系人(姓名,EMAIL)><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><!ATTLIST聯(lián)系人編號ID#REQUIRED><!ATTLIST聯(lián)系人主管IDREF#IMPLIED>]><聯(lián)系人列表><聯(lián)系人編號="2"><姓名>張三</姓名><EMAIL></EMAIL></聯(lián)系人><聯(lián)系人編號=“1”主管="2"><姓名>李四</姓名><EMAIL></EMAIL></聯(lián)系人></聯(lián)系人列表><聯(lián)系人編號="2"><姓名>李四</姓名><EMAIL></EMAIL></聯(lián)系人></聯(lián)系人列表>97分布式系統(tǒng)-XML實體實體在XML中充當著宏或別名的角色它的定義方式是:<!ENTITY實體名"實體內(nèi)容">或利用SYSTEM定義外部實體,方式為:<!ENTITY實體名SYSTEM"外部文件名">引用方式為:&實體名;98分布式系統(tǒng)-XML<?xmlversion="1.0"encoding="GB2312"standalone="yes"?><!DOCTYPE聯(lián)系人列表[<!ELEMENT聯(lián)系人列表(聯(lián)系人)*><!ELEMENT聯(lián)系人(姓名,EMAIL)><!ELEMENT姓名(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><!ATTLIST聯(lián)系人國籍ENTITY><!ENTITYcn“中華人民共和國">]><聯(lián)系人列表><聯(lián)系人國籍=“&cn;"><姓名>張三</姓名><EMAIL></EMAIL></聯(lián)系人>99分布式系統(tǒng)-XMLDTD局限性不支持namespaces僅支持字符串數(shù)據(jù)類型一致性約束非常弱(ID/IDREF/IDREFSonly)不能夠很方便地表達無序(unorder)的內(nèi)容所有元素的名字是全局的<!ELEMENTName(Last,First)><!ELEMENTName(#PCDATA)>
100分布式系統(tǒng)-XML練習1指出錯誤<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(hiredate,name)>]><document><employee><hiredate>October15,2005</hiredate><name>GraceKelly</name></employee></document>101分布式系統(tǒng)-XML練習2指出錯誤<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(name,hiredate)><!ELEMENTname(#PCDATA)><!ELEMENThiredate(#PCDATA)>]><document><employee><hiredate>October15,2005</hiredate><name>GraceKelly</name></employee></document>102分布式系統(tǒng)-XML練習3指出錯誤<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(hiredate+|name+)><!ELEMENThiredate(#PCDATA)><!ELEMENTname(#PCDATA)>]><document><employee><hiredate>October15,2005</hiredate><name>GraceKelly</name></employee></document>103分布式系統(tǒng)-XML<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)?><!ELEMENTemployee(hiredate+,name*,phone+)><!ELEMENThiredate(#PCDATA)><!ELEMENTname(#PCDATA)><!ELEMENTphone(#PCDATA)>]><document><employee><hiredate>October15,2005</hiredate><name>GraceKelly</name><phone>555.8888</phone></employee><employee><hiredate>October16,2005</hiredate><name>MyrnaLoy</name><name>MurielBlandings</name><phone>555.9999</phone></employee></document>4.指出錯誤104分布式系統(tǒng)-XML練習<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price)><!ELEMENTproduct(#PCDATA)><!ELEMENTid(#PCDATA)><!ELEMENTprice(#PCDATA)><!ATTLISTemployeesupervisorCDATA#IMPLIEDdivisionCDATA#IMPLIEDfullTimeCDATA#IMPLIED>]><document>
<employeesupervisor="no"division="plastics"fullTime="yes"><name><lastname>Kelly</lastname><firstname>Grace</firstname></name><hiredate>October15,2005</hiredate>105分布式系統(tǒng)-XML屬性默認值-立即值<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price)><!ELEMENTproduct(#PCDATA)><!ELEMENTid(#PCDATA)><!ELEMENTprice(#PCDATA)><!ATTLISTemployeesupervisorCDATA"no"divisionCDATA"plastics"fullTimeCDATA"yes">.106分布式系統(tǒng)-XML屬性默認值-#REQUIRED<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!DOCTYPEdocument[<!ELEMENTdocument(employee)*><!ELEMENTemployee(name,hiredate,projects)><!ELEMENTname(lastname,firstname)><!ELEMENTlastname(#PCDATA)><!ELEMENTfirstname(#PCDATA)><!ELEMENThiredate(#PCDATA)><!ELEMENTprojects(project)*><!ELEMENTproject(product,id,price)><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國雙層四線底封機和自動沖床數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年天然橡膠塞項目投資價值分析報告
- 2025至2030年凱旋門煙花項目投資價值分析報告
- 2025至2030年滅火器固定架項目投資價值分析報告
- 二零二五年度環(huán)保產(chǎn)業(yè)計件工資與環(huán)保指標達標勞動合同
- 2025年度瓷磚電商平臺合作推廣電子合同
- 二零二五年度生態(tài)環(huán)保工程承建施工合同標準版4篇
- 二零二五年度家居用品代加工品質(zhì)標準合同4篇
- 二零二五版建筑景觀設計合同范本3篇
- 2025年度環(huán)保設備質(zhì)押典當融資合同范本4篇
- 2025-2030年中國草莓市場競爭格局及發(fā)展趨勢分析報告
- 奕成玻璃基板先進封裝中試線項目環(huán)評報告表
- 廣西壯族自治區(qū)房屋建筑和市政基礎設施全過程工程咨詢服務招標文件范本(2020年版)修訂版
- 人教版八年級英語上冊期末專項復習-完形填空和閱讀理解(含答案)
- 2024新版有限空間作業(yè)安全大培訓
- GB/T 44304-2024精細陶瓷室溫斷裂阻力試驗方法壓痕(IF)法
- 年度董事會工作計劃
- 五年級上冊口算練習400題及答案
- 高三數(shù)學寒假作業(yè)1
- 1例左舌鱗癌手術患者的圍手術期護理體會
- (完整)100道兩位數(shù)加減兩位數(shù)口算題(難)
評論
0/150
提交評論