国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Java開發(fā)者XML基礎全程詳細講解

2019-11-18 12:50:11
字體:
來源:轉載
供稿:網(wǎng)友

  xml介紹
  經常會出現(xiàn)這種情況,新思想產生之后,人們回過頭來往往覺得其非常簡單并且理所應當,以至于每個人都希奇竟然以前不是這樣。這種情況往往表明所謂的新思想究竟不是真正的全新的思想。java這一革新性的語言就是吸取之前的所有程序語言的思想才得以出現(xiàn)的。就象Java源于之前的程序語言一樣,現(xiàn)在出現(xiàn)了XML——可擴展標記語言(the Extensible Markup Language)。XML是一種方便人們描述數(shù)據(jù)的輕量語言。
  
  XML為標記結構性信息如文本提供了一種簡單而通用的格式。XML承繼了Html這一通用文本表示格式并將之推廣,從而可處理任何類型的數(shù)據(jù)。在此過程中,XML不僅重鑄了HTML并且正影響著商業(yè)業(yè)務關于其自身信息的考慮。在世界越來越被文檔和數(shù)據(jù)交換驅策的情況下,XML時代來臨了。
  
  一點背景知識
  XML和HTML之所以被稱為標記語言(markup languages)是因為XML用象征結構和意義的標簽來包裹文本部分,從而為純文本文檔添加結構信息,這一點和人們用鋼筆來標識句子、添加注釋很相似。然而HTML定義了一系列的標簽和標簽結構,而XML沒有預先定義這些,XML的創(chuàng)建者可以定義標簽、規(guī)則以及它們的含義。
  
  XML和HTML都源自標準通用標記語言SGML。SGML(Standard Generalized Markup Language)是所有標記語言的始祖,在出版業(yè)(包括O'Reilly)廣泛應用多年。但是直到Web通行,它才通過HTML流傳開來。HTML起自SGML的一個小小應用,假如HTML無所不能的話,這說明簡單勝過一切。
  
  然而盡管HTML曾經頗為風行,但最終結果表明它還大有局限。使用HTML的文檔把結構信息(如<head>和 <body>)和描述信息(舉個尤其過分的例子:<blink>)不恰當?shù)鼗煸谝黄稹_@種把模型和用戶界面攪在一塊兒的方式對HTML作為數(shù)據(jù)交互格式帶來了限制,因為計算機難以理解這種方式。XML文檔完全由結構組成,應用含義取決于文檔讀者。本章我們將看到,有幾種相關語言用于解釋和轉換XML以利于其顯示和后續(xù)處理。
  
  文本還是二進制
  Tim Berners-Lee二十世紀八十年代后期在歐洲粒子物理研究所(CERN)開始試運行Web時,他想用超文本組織規(guī)劃信息。由于Web需要一種協(xié)議,HTTP——一種基于文本的簡單客戶端-服務器協(xié)議創(chuàng)建出來。純文本方式到底有什么過人之處呢?比如說,Tim為什么不采用微軟的Word格式做為Web文檔的基礎呢?基于二進制的、人類不易閱讀的格式和協(xié)議難道不是效率更高嗎?既然從Web誕生到現(xiàn)在有數(shù)以百萬億計的HTTP事務,讓它們用英文單詞“GET”和“POST”,這真的個好主意嗎?
  
  答案是“是”,如我們現(xiàn)在看到的一樣。開發(fā)人員顯然更輕易和人類可讀的東西打交道。盡管可以在時間和空間上對其進行高度優(yōu)化,但由于它已被普遍接受并且可輕易跨越多個平臺,簡單和透明顯得更為重要。這是XML的首要基本原則。
  
  通用解析器
  使用文本交換數(shù)據(jù)不僅僅是一種新思想;從歷史上看,必須為每個新文檔格式寫一個新的解析器。解析器是讀取文檔并能理解格式規(guī)則的應用程序,它常要求文檔內容符合某些規(guī)則。比如,Java中的PRoperties類是專門處理標準屬性文件格式(第十章)的解析器。在第十七章的簡單電子制表程序中,我們構造了一個能理解基本數(shù)學表達式的解析器。我們看到,隨著復雜度的增加,解析可能變得非常棘手。
  
  XML狀態(tài)
  本章我們要討論的API非常強大而且已經很好地測試過,如今它們已被廣泛應用于企業(yè)級系統(tǒng)。遺憾的是,現(xiàn)在和Java綁定的XML工具只能部分解除開發(fā)者的負擔。
  
  盡管我們已經從低級的字符串處理跨越到公共的結構化文檔格式,但標準工具通常仍然要求開發(fā)人員編寫低級代碼來遍歷文本內容,手工解析字符串數(shù)據(jù)。這樣的程序難免有點不太穩(wěn)定,而且其中的大部分工作單調乏味。下一步(下章我們將簡要討論)我們將使用生成工具讀取XML文檔描述(XML DTD或XML Schema)并生成相應的Java類,或者將已經存在的類自動綁定到XML數(shù)據(jù)上。
  
  XML API
  Java1.4自帶所有和XML協(xié)同工作的基本API,包括javax.xml標準擴展包,該包處理用于XML的簡單API(Simple API for XML,SAX)和文檔對象模型(Document Object Model,DOM)以及擴展的風格表單語言(eXtensible Stylesheet Language,XSL)轉換。假如您使用的是Java1.4之前的版本,您仍然可以使用所有這些工具,但您必須從http://java.sun.com/xml/.上下載各個相應程序包。
  
  XML和Web瀏覽器
  微軟公司的IE網(wǎng)頁瀏覽器是第一個顯式支持XML的瀏覽器。假如您在IE5.0或以上版本中載入XML文件,文件將使用非凡的樣式菜單顯示為一棵樹的形式。通過使用動態(tài)HTML,該樣式菜單答應查看文檔的時候收縮和展開樹節(jié)點。IE也支持在瀏覽器中直接進行基本的XSL轉換。我們將在本章末些時候討論XSL。
  
  Netscape 6.x 和 最新的 Mozilla也能理解XML內容并支持通過XSL顯示文檔。然而到本章寫作的時候為止,它們缺省狀況仍不能提供友好的閱讀工具。您可以通過使用“查看源文件”選項來使XML以較好形式顯示。但一般而言,假如您通過以上這些瀏覽器或其它不顯式轉換XML的瀏覽器加載XML文檔,這些瀏覽器只是簡單地顯示剝除所有標簽(結構信息)之后的文檔文本。這是它們作用于XML的預定方式。
  
  XML基礎
  XML的基本語法相當簡單。假如您有HTML的相關經驗,那您實際上對XML也有所了解。象HTML一樣,XML將信息表示為使用標簽添加結構的文本。標簽以夾在小于號(<)和大于號(>)之間的名字開始。和HTML不同的是,XML的標簽必須匹配。換言之,開始標簽之后必須有相應的結束標簽。結束標簽很象開始標簽,但它以小于號和斜杠(</)打頭。開始標簽、結束標簽以及開始標簽和結束標簽之間的所有內容合起來被稱為XML文檔的元素(element)。元素中可以包含其它元素,但它們必須正確嵌套,所有元素內的開始標簽必須在元素本身結束前用結束標簽結束。元素可以包含純文本和文本和元素的混合物。注釋放置于標記“<!—”和“ -->”之間。下面是幾個例子。
  
  <!-- Simple -->
  
  <Sentence>This is text.</Sentence>
  
  <!-- Element -->
  
  <Paragraph><Sentence>This is text.</Sentence></Paragraph>
  
  <!-- Mixed -->
  
  <Paragraph>
  
    <Sentence>This <verb>is</verb> text.</Sentence>
  
  </Paragraph>
  
  <!-- Empty -->
  
  <PageBreak></PageBreak> 
  
  空白標簽可以用一個以斜杠和大于號結束的單個標簽更緊湊的表示(/>),如下所示:
  
  <PageBreak/>
  
  屬性
  XML元素可以包含屬性,也就是開始標簽中提供的名-值對。如:
  
  <Document type="LEGAL" ID="42">...</Document>
  
  <Image name="truffle.jpg"/>
  
  屬性值必須包含在引號中,使用雙引號(”)或單引號(’)都可以。單引號在值本身含有雙引號時尤其有用。
  
  屬性用于和元素數(shù)據(jù)相關的簡單、非結構性的性質或標識。總是可以把屬性組織為子元素,所以沒有必須使用屬性的真正要求。但使用屬性通常使XML文檔更賦邏輯,更易閱讀。在上面的小例子片斷中,Document元素的屬性type和 ID代表文檔的元數(shù)據(jù)。我們可能期望代表Document的Java類擁有文檔類型(如LEGAL)的靜態(tài)標識。對Image元素而言,屬性是只包含文件名的更為簡潔的形式。通常屬性沒有重要的內部結構,是不可再分的;而子元素卻可以任意復雜。
  
  XML文檔
  XML文檔以下列文檔頭開頭并且有一個根元素。
  
  <?xml version="1.0" encoding="UTF-8"?>
  
  <MyDocument>
  
  </MyDocument>
  
  文件頭指明了XML的版本和文件的編碼特征。可以把元素層次理解為一棵樹的形式,根元素也就是元素層次的頂層元素。假如您漏掉這樣的文件頭或者XML文本中沒有單個根元素,那樣的東西只能稱為XML片斷。
  
  編碼
  XML文檔的默認編碼方式是UTF-8,一種ASCII使用者易于使用的8位Unicode編碼方式。但XML文檔可以通過指定XML文件頭的encoding屬性來指定文檔編碼。
  
  XML文檔中有些字符是需要保留使用的,比如表示元素標簽的字符“<”和“>”。假如您需要在XML文檔內容中包含這些字符,則必須對它們進行轉碼。XML提供了稱為“實體(entities)”的轉義機制以對非凡結構進行轉碼。XML中有五種預定義的實體。如表23-1所示。
  
  
表23-1  XML實體

  
Java開發(fā)者XML基礎全程具體講解

  也可以使用被稱作字符數(shù)據(jù)(CDATA)的非凡的不解析文本段來進行編碼。一個CDATA塊以<![CDATA[開始,以]]>結束,如下所示:
  
  <![CDATA[ Learning Java, O'Reilly & Associates ]]>
  
  CDATA塊看起來有點象注釋,但CDATA塊中的數(shù)據(jù)確實是XML文檔的一部分,只不過對解析器來說是不透明的。
  
  命名空間
  您可能看到了HTML具有用來構造網(wǎng)頁的<body>標簽,試想一下我們要為殯儀館編寫XML,而殯儀館因為某些令人恐怖的原因也使用<body>標簽。假如要將HTML和尸體信息混在一塊兒可能會帶來些問題。
  
  在這種情況下,假如您把HTML標簽和殯儀館標簽當做一種語言,文檔使用的元素(標簽名稱)就是這些語言的詞匯。XML命名空間指明對于給定元素您使用的是哪種字典,從而讓我們可以把它們隨意混合在一起。(

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新干县| 恩平市| 浠水县| 蚌埠市| 柳河县| 郁南县| 闵行区| 襄汾县| 昆山市| 塔城市| 东明县| 通许县| 永宁县| 辽源市| 阳信县| 香格里拉县| 盐亭县| 文山县| 平阳县| 郁南县| 淮北市| 南郑县| 建水县| 九江县| 武义县| 益阳市| 宁河县| 镇雄县| 基隆市| 团风县| 喜德县| 南京市| 阿尔山市| 大同市| 建平县| 太康县| 英超| 乐业县| 兴和县| 荣成市| 岳池县|