XML入門問答

2021-06-28 16:12:09 字數 4559 閱讀 2312

我們日常書寫的語言,被稱為書面自然語言。如果在書面自然語言中為了標識某些資訊,而加入一些標記,這種書面自然語言就可被稱為置標語言(英語為:markup language)。比如在一段書面語言中,為了說明某一句話的重要,在這句話下面畫上底劃線。但是,我們在這裡解釋的置標語言,實際上是一種為了計算機處理而設計的置標語言,其中所用到的標記,往往使用代表一定含義的文字或數字表示。通常的做法是,根據需要,先定義一套助意的標記,然後將這套標記新增到書面語言中去,使書面語言變成置標語言。

例如,我們為了讓計算機了解,一段書面語言中,那一部分是標題,那一部分是作者名,那一部分是正文,我們定義如下一套標記:

《標題》、

從字面上看,sgml(standard generalized markup language–標準的通用置標語言)是一種置標語言,實際上它是一種通用的文件結構描述置標語言,主要用來定義文獻模型的邏輯和物理類結構。sgml是iso組織於2023年發布的iso 8879國際標準。

乙個sgml語言程式,要由三部分組成,即語法定義、檔案型別定義(簡稱dtd–definition type document)和檔案例項。語法定義,定義了檔案型別定義和檔案例項的語法結構;檔案型別定義,定義了檔案例項的結構和組成結構的元素型別。檔案例項是sgml語言程式的主體部分。

sgml的實際使用中,每乙個特定的dtd都定義了一類檔案。例如,所有的新聞稿件都可以使用同乙個dtd。因此,人們習慣上把具有某一特定dtd的sgml語言,稱為某某置標語言。例如用於國際網際網路的html語言。這樣sgml就成為那些派生語言的元語言。

xml是extensible markup language(可擴充套件的置標語言)的縮寫,是w3c組織於2023年2月發布的標準。w3c組織制定xml標準的初衷是,定義一種網際網路上交換資料的標準。w3c採取了簡化sgml的策略,在sgml基礎上,去掉語法定義部分,適當簡化dtd部分,並增加了部分網際網路的特殊成分。因此,xml也是一種置標語言,基本上是sgml的乙個子集。因為xml也有dtd,所以xml也可以作為派生其它置標語言的元語言。

html是hypertext markup language(超文字置標語言)的縮寫,是sgml的乙個例項,是w3c組織發布的標準,是專門為在網際網路上發布資訊而設計的置標語言。

html是sgml的乙個例項,它的dtd作為標準被固定下來,因此,html不能作為定義其它置標語言的元語言。xml是sgml的乙個子集,嚴格地講,xml也還是sgml。與html不同的是,xml有dtd,因而也可以象sgml那樣,作為元語言,來定義其它檔案系統,或稱其它置標語言。如果把置標語言分為元置標語言和例項置標語言的話,sgml和xml都是元置標語言,而html和由xml派生的xhtml都是例項置標語言。

在國際網際網路上,伺服器與伺服器之間、伺服器與瀏覽器之間有大量的資料需要交換,特別是在電子商務中。這些被交換的資料,都被要求對資料的內容和表現方式有所說明,用置標語言擔當這個重任是再合適不過了。應該說sgml完全可以扮演這個國際網際網路上資料交換標準語言的角色,然而由於sgml對網際網路應用來講太複雜了,因而需要一種即能象sgml那樣作為元語言使用,又能比較簡單地進行處理的置標語言,來擔此重任。在這種背景下xml就應運而生了。因此在網際網路世界xml的用途主要有兩個,一是作為元置標語言,定義各種例項置標語言標準;二是作為標準交換語言,擔負起描述交換資料的作用。

簡單地講,html不能完成,我們希望xml所要完成的任務。原因很簡單,xml所要完成的任務,必須由元置標語言來完成,而html只是乙個例項置標語言。 在xml發布之前,國際網際網路的發展受到html如下幾個問題的束縛:

1) html無法描述資料內容,而這一點恰恰是資料檢索、電子商務所必須的。

2) html對資料表現的描述能力是十分不夠的,如html還不能描述向量圖形、   科學符號等物件,目前只能通過圖象來表現這些物件。

3) html例項置標語言的地位,完全不能適應對新標記需求的發展需要。   

xml的出現,使上述問題都得到很好的解決。

為簡單化sgml,xml重新定義了一些sgml的內部值和引數,並刪去了大量繁雜的、不常用的、使程式設計複雜的特徵(見

回答是肯定的。這也是xml與html區別最大的地方。

xml是w3c組織的乙個專案,xml規格說明書是w3c組織的xml工作組制定的,這個工作組由各領域、公司的專家和協作者組成,並通過e_mail方式交換資訊,進行修改和完善。xml是集體智慧型的結晶,不是某個公司的專利。 1.0版規格說明書由w3c認可,並在2023年2月10日正式推薦使用。

試想在網際網路世界,如果大家都講方言,互相交換資訊時都要進行翻譯,那將是乙個多麼難以溝通和交流的世界。在網際網路世界,xml之所以重要,恰恰是由於它扮演了」國際語言」角色的緣故。此外,xml更為網際網路世界提供了定義各行各業的」專業術語」的工具。

文件型別定義 (dtd) 是一套關於標記符的語法規則。 它告訴你可以在文件中使用哪些標記符, 它們應該按什麼次序出現, 哪些標記符可以出現於其它標記符中, 哪些標記符有屬性, 等等. dtd原來是為使用sgml開發的, 它可以是xml文件的一部分, 但是它通常是乙份單獨的文件或者一系列文件 。xml本身並沒有乙個通用的dtd,想使用xml進行資料交換的行業或組織可以定義它們自己的dtd。

閱讀xml文件的工具一般稱為xml解析器, 也稱為xml處理器。 xml處理器將資料傳送到應用軟體, 以便處理, 出版, 查詢, 或顯示。xml不給應用軟體提供 應用程式介面 (api), 它只是把資料傳給應用軟體. xml處理器不解析非構造良好的資料。 netscape 和 microsoft 都已經將xml解析器包含在其瀏覽器中。 xml開發者團體提供免費的xml閱讀器和解析器, 以便在應用軟體或xml製作軟體中進行應用。

使用問題

比較重要的原因有以下六條:

1)作者和**商能使用xml設計自己的文件型別,不必被html所約束。

2)由於xml的超文字鏈結能力比html強得多,xml提供的資訊內容比      html更豐富,也更易於使用。

3)xml能提供更多更好的機制方便瀏覽器的資訊表現和優化效能。

4)xml捨棄了sgml的複雜性,因此編寫處理xml的應用程式會很容易。

5)資訊易於儲存,可重複使用。

6)xml檔案在sgml環境中也可使用,不一定要侷限於在web中使用。

是的,任何程式語言都能被用來從xml形式的源文件中輸出資料。已經出現了許多的前端和後台工具使得程式設計和資料管理更加方便。下面兩個**有更加詳細的說明: >

開發問題

從中就可以找到。

在標準sgml文件中,所有用到的標記、元素、元素的屬性都必須由檔案型別定義(dtd)來說明。但是這種限制在xml的應用中並不是總是需要的,所以xml文件被設計成既可以帶有dtd,也可以沒有dtd檔案。dtdless的意思是沒有dtd的xml檔案,你可以建立自己的標識和元素,但不用在dtd中正式定義。dtdless檔案通過建立元素時對它們直接進行定義。但是當xml應用程式,如乙個瀏覽器遇到dtdless檔案時,因為沒有dtd檔案告訴瀏覽器關於這個檔案的結構資訊,所以建立dtdless文件時,仍需要一些規則來進行規範。這樣「well_formed」xml文件的概念就相應產生了,它明確規定了書寫xml文件的語法規範。所有符合這個規範的xml文件就被稱為是「well_formed」的xml文件。如果乙個「well_formed」的xml文件,包含了dtd說明,那麼這個文件就被稱為是乙個「valid」的xml文件了。

這是由編碼問題引起的。xml標準規定,xml分析器必須支援「utf-8」和「utf-16」編碼,而且必須能夠自動區分這兩種編碼的檔案,對於其他編碼(包括常用的中文編碼「gb2312」或「big5」)並不要求支援。如果xml檔案中包含編碼宣告,分析器則按照宣告的編碼進行處理,否則就按照識別結果進行處理(識別的結果總是「utf-8」和「utf-16」中的一種)。因此,如果xml檔案的編碼在這兩種之外,你必須在xml檔案前加上編碼宣告,如:

xml是一種檔案格式,它沒有規定與資料庫的連線方法,你需要用傳統的方法連線資料庫,進行資料庫查詢,然後將查詢結果轉化為xml格式。現在有一些工具提供了xml與資料庫的連線過程大都遵循這樣的步驟。下面是乙個利用asp直接生成xml檔案的例子,你可以訪問檢視執行效果。

複製** **如下:

<%@ language="vbscript" %>

<?xml version="1.0" encoding="gb2312"?>

<?xml:stylesheet type="text/xsl" href="../image/roster.xsl"?>

<%

set cconn = server.createobject("adodb.connection")

call cconn.open("dsn","user", "pwd")

set rs = cconn.execute("select distinct * from roster")

do while not rs.eof %>

<%=trim(rs("name"))%>

<%=trim(rs("nativeplace"))%>

<%=trim(rs("age"))%>

<%=trim(rs("telephone"))%>

<% rs.movenext

loop

rs.close

set rs=nothing

set cconn=nothing

%>

python入門問答

python有哪些ide python ide開發環境有很多,其中最為常用的有wing ide 推薦 eclipse pydev ulipad eric3 textmate wing ide中文和使用中文 對於現實中文網上有很多,顯示中文後執行的時候會提示錯誤中就需要在檔案首行加入 coding g...

機器學習入門問答 一

注 倉促完成可能有錯誤的地方,各位大神麻煩指出,以便更好地完善 機器學習是什麼?1 在沒有明確設定的情況下,使計算機具有學習能力。2 電腦程式從經驗e中學習,解決某一任務t,進行某一效能度量p,通過p測定在t上的表現因經驗e而提高。機器學習的型別?按資料劃分 監督學習 給定包含正確答案 標籤 的資料...

XML入門 XML文件規則

命名空間 xml 的能力來自它的靈活性,即您和我以及數百萬其他人可以定義我們自己的標記來描述我們的資料。記得表示個人姓名和位址的樣本 xml 文件嗎?那個文件包括表示個人尊稱的元素,這是對元素名稱非常合理的選擇。如果您經營一家網上書店,您或許會建立乙個表示書名的元素。如果您經營一家網上抵押放款公司,...