XML經(jīng)典問(wèn)答
更新時(shí)間:2007年01月13日 00:00:00 作者:
一.HTML已經(jīng)這樣流行了,為什么還要發(fā)展XML?
簡(jiǎn)單地講,HTML不能完成,我們希望XML所要完成的任務(wù)。原因很簡(jiǎn)單,XML所要完成的任務(wù),必須由元置標(biāo)語(yǔ)言來(lái)完成,而HTML只是一個(gè)實(shí)例置標(biāo)語(yǔ)言。 在XML發(fā)布之前,國(guó)際互聯(lián)網(wǎng)的發(fā)展受到HTML如下幾個(gè)問(wèn)題的束縛:
1) HTML無(wú)法描述數(shù)據(jù)內(nèi)容,而這一點(diǎn)恰恰是數(shù)據(jù)檢索、電子商務(wù)所必須的。
2) HTML對(duì)數(shù)據(jù)表現(xiàn)的描述能力是十分不夠的,如HTML還不能描述矢量圖形、 科學(xué)符號(hào)等對(duì)象,目前只能通過(guò)圖象來(lái)表現(xiàn)這些對(duì)象。
3) HTML實(shí)例置標(biāo)語(yǔ)言的地位,完全不能適應(yīng)對(duì)新標(biāo)記需求的發(fā)展需要。
XML的出現(xiàn),使上述問(wèn)題都得到很好的解決。
試想在互聯(lián)網(wǎng)世界,如果大家都講方言,互相交換信息時(shí)都要進(jìn)行翻譯,那將是一個(gè)多么難以溝通和交流的世界。在互聯(lián)網(wǎng)世界,XML之所以重要,恰恰是由于它扮演了"國(guó)際語(yǔ)言"角色的緣故。此外,XML更為互聯(lián)網(wǎng)世界提供了定義各行各業(yè)的"專(zhuān)業(yè)術(shù)語(yǔ)"的工具。
二.如何在瀏覽器中閱讀XML?
閱讀XML文檔的工具一般稱(chēng)為XML解析器, 也稱(chēng)為XML處理器。 XML處理器將數(shù)據(jù)傳送到應(yīng)用軟件, 以便處理, 出版, 查詢(xún), 或顯示。XML不給應(yīng)用軟件提供 應(yīng)用程序接口 (API), 它只是把數(shù)據(jù)傳給應(yīng)用軟件. XML處理器不解析非構(gòu)造良好的數(shù)據(jù)。 Netscape 和 Microsoft 都已經(jīng)將XML解析器包含在其瀏覽器中。 XML開(kāi)發(fā)者團(tuán)體提供免費(fèi)的XML閱讀器和解析器, 以便在應(yīng)用軟件或XML制作軟件中進(jìn)行應(yīng)用。
三.為什么要使用XML而不是HTML?
比較重要的原因有以下六條:
?。保┳髡吆凸?yīng)商能使用XML設(shè)計(jì)自己的文檔類(lèi)型,不必被HTML所約束。
2)由于XML的超文本鏈接能力比HTML強(qiáng)得多,XML提供的信息內(nèi)容比 HTML更豐富,也更易于使用。
3)XML能提供更多更好的機(jī)制方便瀏覽器的信息表現(xiàn)和優(yōu)化性能。
?。矗ML舍棄了SGML的復(fù)雜性,因此編寫(xiě)處理XML的應(yīng)用程序會(huì)很容易。
?。担┬畔⒁子诖鎯?chǔ),可重復(fù)使用。
?。叮ML文件在SGML環(huán)境中也可使用,不一定要局限于在WEB中使用。
四.可以用Java創(chuàng)建和管理XML文件嗎?
是的,任何程序設(shè)計(jì)語(yǔ)言都能被用來(lái)從XML形式的源文檔中輸出數(shù)據(jù)。已經(jīng)出現(xiàn)了許多的前端和后臺(tái)工具使得程序設(shè)計(jì)和數(shù)據(jù)管理更加方便。下面兩個(gè)網(wǎng)址有更加詳細(xì)的說(shuō)明: http://www.markwatson.com/XMLdb_0_1.htm http://developerlife.com
五.為什么XML文件的分析結(jié)果出現(xiàn)亂碼?
這是由編碼問(wèn)題引起的。XML標(biāo)準(zhǔn)規(guī)定,XML分析器必須支持“UTF-8”和“UTF-16”編碼,而且必須能夠自動(dòng)區(qū)分這兩種編碼的文件,對(duì)于其他編碼(包括常用的中文編碼“GB2312”或“BIG5”)并不要求支持。如果XML文件中包含編碼聲明,分析器則按照聲明的編碼進(jìn)行處理,否則就按照識(shí)別結(jié)果進(jìn)行處理(識(shí)別的結(jié)果總是“UTF-8”和“UTF-16”中的一種)。因此,如果XML文件的編碼在這兩種之外,你必須在XML文件前加上編碼聲明,如:<?xml version="1.0" encoding="gb2312"?>就表示XML文件的編碼是“gb2312”。
現(xiàn)有的XML分析器大多不支持中文編碼“GB2312”或“BIG5”,因此無(wú)法讀取包含中文的XML文件。你可以使用支持中文編碼的分析器,如MSXML,IBMJAVA4C,IBMJAVA4J等進(jìn)行XML分析。你也可以用內(nèi)碼轉(zhuǎn)換工具,將編碼轉(zhuǎn)換為“UTF-8”或“UTF-16”后進(jìn)行解析,然后將解析結(jié)果轉(zhuǎn)換回原來(lái)的編碼。本站的軟件園地中的ccnv(Code Converter)就是這樣的工具。當(dāng)然,你也可以自己寫(xiě)一個(gè)內(nèi)碼轉(zhuǎn)換程序。
關(guān)于“UTF-8”和“UTF-16”編碼的詳細(xì)信息,請(qǐng)查看本站標(biāo)準(zhǔn)薈萃中的UTF-16和UTF-8標(biāo)準(zhǔn)。
六.XML如何與數(shù)據(jù)庫(kù)連接?
XML是一種文件格式,它沒(méi)有規(guī)定與數(shù)據(jù)庫(kù)的連接方法,你需要用傳統(tǒng)的方法連接數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),然后將查詢(xún)結(jié)果轉(zhuǎn)化為XML格式?,F(xiàn)在有一些工具提供了XML與數(shù)據(jù)庫(kù)的連接過(guò)程大都遵循這樣的步驟。下面是一個(gè)利用ASP直接生成XML文件的例子,你可以訪(fǎng)問(wèn)http://www.xml.net.cn/Asps/test/roster1.asp查看執(zhí)行效果。
簡(jiǎn)單地講,HTML不能完成,我們希望XML所要完成的任務(wù)。原因很簡(jiǎn)單,XML所要完成的任務(wù),必須由元置標(biāo)語(yǔ)言來(lái)完成,而HTML只是一個(gè)實(shí)例置標(biāo)語(yǔ)言。 在XML發(fā)布之前,國(guó)際互聯(lián)網(wǎng)的發(fā)展受到HTML如下幾個(gè)問(wèn)題的束縛:
1) HTML無(wú)法描述數(shù)據(jù)內(nèi)容,而這一點(diǎn)恰恰是數(shù)據(jù)檢索、電子商務(wù)所必須的。
2) HTML對(duì)數(shù)據(jù)表現(xiàn)的描述能力是十分不夠的,如HTML還不能描述矢量圖形、 科學(xué)符號(hào)等對(duì)象,目前只能通過(guò)圖象來(lái)表現(xiàn)這些對(duì)象。
3) HTML實(shí)例置標(biāo)語(yǔ)言的地位,完全不能適應(yīng)對(duì)新標(biāo)記需求的發(fā)展需要。
XML的出現(xiàn),使上述問(wèn)題都得到很好的解決。
試想在互聯(lián)網(wǎng)世界,如果大家都講方言,互相交換信息時(shí)都要進(jìn)行翻譯,那將是一個(gè)多么難以溝通和交流的世界。在互聯(lián)網(wǎng)世界,XML之所以重要,恰恰是由于它扮演了"國(guó)際語(yǔ)言"角色的緣故。此外,XML更為互聯(lián)網(wǎng)世界提供了定義各行各業(yè)的"專(zhuān)業(yè)術(shù)語(yǔ)"的工具。
二.如何在瀏覽器中閱讀XML?
閱讀XML文檔的工具一般稱(chēng)為XML解析器, 也稱(chēng)為XML處理器。 XML處理器將數(shù)據(jù)傳送到應(yīng)用軟件, 以便處理, 出版, 查詢(xún), 或顯示。XML不給應(yīng)用軟件提供 應(yīng)用程序接口 (API), 它只是把數(shù)據(jù)傳給應(yīng)用軟件. XML處理器不解析非構(gòu)造良好的數(shù)據(jù)。 Netscape 和 Microsoft 都已經(jīng)將XML解析器包含在其瀏覽器中。 XML開(kāi)發(fā)者團(tuán)體提供免費(fèi)的XML閱讀器和解析器, 以便在應(yīng)用軟件或XML制作軟件中進(jìn)行應(yīng)用。
三.為什么要使用XML而不是HTML?
比較重要的原因有以下六條:
?。保┳髡吆凸?yīng)商能使用XML設(shè)計(jì)自己的文檔類(lèi)型,不必被HTML所約束。
2)由于XML的超文本鏈接能力比HTML強(qiáng)得多,XML提供的信息內(nèi)容比 HTML更豐富,也更易于使用。
3)XML能提供更多更好的機(jī)制方便瀏覽器的信息表現(xiàn)和優(yōu)化性能。
?。矗ML舍棄了SGML的復(fù)雜性,因此編寫(xiě)處理XML的應(yīng)用程序會(huì)很容易。
?。担┬畔⒁子诖鎯?chǔ),可重復(fù)使用。
?。叮ML文件在SGML環(huán)境中也可使用,不一定要局限于在WEB中使用。
四.可以用Java創(chuàng)建和管理XML文件嗎?
是的,任何程序設(shè)計(jì)語(yǔ)言都能被用來(lái)從XML形式的源文檔中輸出數(shù)據(jù)。已經(jīng)出現(xiàn)了許多的前端和后臺(tái)工具使得程序設(shè)計(jì)和數(shù)據(jù)管理更加方便。下面兩個(gè)網(wǎng)址有更加詳細(xì)的說(shuō)明: http://www.markwatson.com/XMLdb_0_1.htm http://developerlife.com
五.為什么XML文件的分析結(jié)果出現(xiàn)亂碼?
這是由編碼問(wèn)題引起的。XML標(biāo)準(zhǔn)規(guī)定,XML分析器必須支持“UTF-8”和“UTF-16”編碼,而且必須能夠自動(dòng)區(qū)分這兩種編碼的文件,對(duì)于其他編碼(包括常用的中文編碼“GB2312”或“BIG5”)并不要求支持。如果XML文件中包含編碼聲明,分析器則按照聲明的編碼進(jìn)行處理,否則就按照識(shí)別結(jié)果進(jìn)行處理(識(shí)別的結(jié)果總是“UTF-8”和“UTF-16”中的一種)。因此,如果XML文件的編碼在這兩種之外,你必須在XML文件前加上編碼聲明,如:<?xml version="1.0" encoding="gb2312"?>就表示XML文件的編碼是“gb2312”。
現(xiàn)有的XML分析器大多不支持中文編碼“GB2312”或“BIG5”,因此無(wú)法讀取包含中文的XML文件。你可以使用支持中文編碼的分析器,如MSXML,IBMJAVA4C,IBMJAVA4J等進(jìn)行XML分析。你也可以用內(nèi)碼轉(zhuǎn)換工具,將編碼轉(zhuǎn)換為“UTF-8”或“UTF-16”后進(jìn)行解析,然后將解析結(jié)果轉(zhuǎn)換回原來(lái)的編碼。本站的軟件園地中的ccnv(Code Converter)就是這樣的工具。當(dāng)然,你也可以自己寫(xiě)一個(gè)內(nèi)碼轉(zhuǎn)換程序。
關(guān)于“UTF-8”和“UTF-16”編碼的詳細(xì)信息,請(qǐng)查看本站標(biāo)準(zhǔn)薈萃中的UTF-16和UTF-8標(biāo)準(zhǔn)。
六.XML如何與數(shù)據(jù)庫(kù)連接?
XML是一種文件格式,它沒(méi)有規(guī)定與數(shù)據(jù)庫(kù)的連接方法,你需要用傳統(tǒng)的方法連接數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),然后將查詢(xún)結(jié)果轉(zhuǎn)化為XML格式?,F(xiàn)在有一些工具提供了XML與數(shù)據(jù)庫(kù)的連接過(guò)程大都遵循這樣的步驟。下面是一個(gè)利用ASP直接生成XML文件的例子,你可以訪(fǎng)問(wèn)http://www.xml.net.cn/Asps/test/roster1.asp查看執(zhí)行效果。
復(fù)制代碼 代碼如下:
<%@ language="VBScript" %>
<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="..image oster.xsl"?>
<roster>
<%
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 %>
<Record>
<Name><%=trim(rs("name"))%></Name>
<NativePlace><%=trim(rs("NativePlace"))%></NativePlace>
<Age><%=trim(rs("Age"))%></Age>
<Telephone><%=trim(rs("Telephone"))%></Telephone>
</Record>
<% rs.MoveNext
Loop
rs.Close
set rs=nothing
set cConn=nothing
%>
</roster>
<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="..image oster.xsl"?>
<roster>
<%
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 %>
<Record>
<Name><%=trim(rs("name"))%></Name>
<NativePlace><%=trim(rs("NativePlace"))%></NativePlace>
<Age><%=trim(rs("Age"))%></Age>
<Telephone><%=trim(rs("Telephone"))%></Telephone>
</Record>
<% rs.MoveNext
Loop
rs.Close
set rs=nothing
set cConn=nothing
%>
</roster>
相關(guān)文章
XMLDOM對(duì)象方法:Document對(duì)象方法
XMLDOM對(duì)象方法:Document對(duì)象方法...2006-09-09報(bào)錯(cuò):XML頁(yè)無(wú)法顯示,下列標(biāo)記沒(méi)有被關(guān)閉解決方法
從數(shù)據(jù)庫(kù)讀出數(shù)據(jù),然后以XML的格式顯示數(shù)據(jù),但是提示hd,category,subsort等沒(méi)有關(guān)閉2012-12-12存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼
在數(shù)據(jù)提交到數(shù)據(jù)庫(kù)之前的簡(jiǎn)單HTML字符轉(zhuǎn)意,防止javascript惡意代碼,因?yàn)轫?xiàng)目中用到了輸出為xml,所以在輸出之前還要進(jìn)行二次轉(zhuǎn)意,把數(shù)據(jù)庫(kù)中之前加入的<br>轉(zhuǎn)義為正常。2009-11-11