這篇文章主要介紹了基于XML桌面應(yīng)用的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出鄢陵免費(fèi)做網(wǎng)站回饋大家。
前面已經(jīng)提到,通過XSL,我們可以把相同的數(shù)據(jù)以不同的數(shù)據(jù)形式提交給終端客戶,一個XSL文件描述了數(shù)據(jù)的顯示方式,你可以把許多XSL和同一個xml文檔相連來提供不同的基于HTML的表示,這樣事實(shí)上,我們就可以建立基于XML的桌面應(yīng)用程序?;赪indows體系結(jié)構(gòu)的一個圖形表示如下所示:
采用這種方法主要有兩個優(yōu)點(diǎn),首先,你可以以平臺和語言獨(dú)立的方式來操作數(shù)據(jù),其次,不需要編程你就可以實(shí)現(xiàn)對同樣數(shù)據(jù)的不同的視圖表示。
實(shí)際上,你需要一個工具能夠把原始的數(shù)據(jù)轉(zhuǎn)化為XML格式化的形式,然后用HTML的格式表示出來。實(shí)際上在IE5.0中,你可以通過它對XSL的支持來實(shí)現(xiàn)數(shù)據(jù)的不同視圖??梢允褂脙?nèi)建的XSL處理器來從XML流中產(chǎn)生輸出。開發(fā)人員可以編寫不同的XSL劇本,然后用IE內(nèi)建的XSL處理器對它進(jìn)行處理。另一方面,我們可以通過ADO組件的內(nèi)在功能實(shí)現(xiàn)把記錄集轉(zhuǎn)化為XML格式,示例代碼如下:
If Dir(XML_FILE) = "" Then rs.Save XML_FILE, adPersistXML End If 這里常量adPersistXML表示使用一個XML綱要來保存記錄集的內(nèi)容 我們再仔細(xì)看一下Recordset對象的Save方法,其定義如下: Save([FileName As String], [PersistFormat As PersistFormatEnum = adPersistADTG])
每一個參數(shù)都是可選的,但是當(dāng)你第一次把記錄集保存到磁盤上的時候,你必須指定文件的名稱。如果當(dāng)該方法執(zhí)行的時候,存在一個有效的過濾器的話,只有通過過濾的數(shù)據(jù)才能夠被保存。當(dāng)調(diào)用Recordset對象的方法Close關(guān)閉Recordset對象的時候,文件也被自動關(guān)閉。當(dāng)Recordset被保存到磁盤上以后,你可以采用Open方法來閱讀它,具體代碼如下:
rs.open "c:\myrs.xml"
然后我們分析一下關(guān)于XML數(shù)據(jù)的顯示的問題,IE5對XSL的支持是基于W3C最近的草案標(biāo)準(zhǔn)建立的。這里我們討論用VB建立一個應(yīng)用,它通過ADO接口來訪問數(shù)據(jù)源中的數(shù)據(jù)。得到的記錄集可以以不同的格式化的形式展現(xiàn)。通過編寫XSL文檔,你可以任意的增加不同的視圖。
比如,一旦你提取了一個結(jié)果集以后,你可以在VB中用DataGrid控件方便的顯示數(shù)據(jù),具體代碼如下:
Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient queryString = "select * from Employees" rs.Open queryString, "NorthWind" 'NorthWind是微軟的示例數(shù)據(jù)庫,很容易在 'access或者是SQL SERVER中找到 rs.ActiveConnection = Nothing Set DataGrid1.DataSource = rs
在許多情況下,這個的一個視圖是不夠的,你需要對每個字段進(jìn)行嚴(yán)格的控制。整個表中的記錄可能既用表格又用樹的形式表示,提供多個視圖會讓用戶感到更加舒服。 XML和XSL相結(jié)合是這種問題的很好的解決方案,你可以充分利用IE5中的WebBrowser控件的功能直接進(jìn)行瀏覽。
ADO組件本身不對它產(chǎn)生的XML文檔生成任何的XSL文檔。單這并不表示你不能自己編寫一個通用的XSL文檔來改變數(shù)據(jù)的顯示方式。比如為了自動的把一個包含ADO記錄集的XML文檔以表格的形式顯示的話,需要在XML的文檔頭部增加如下的代碼:
?。?xml-stylesheet type="text/xsl" href="simple.xsl"?>
這個simple.xsl文件必須放在和XML文檔相同的目錄下,它包含兩個嵌套的循環(huán),第一個循環(huán)枚舉了元素的所有屬性,這些屬性的名字作為標(biāo)題顯示在第一行,第二個循環(huán)用來輸出記錄集中的所有記錄。
simple.xsl文件的代碼如下所表示:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns:html="http://www.w3.org/TR/REC-html40" result-ns="" language="JScript"> ?。紉sl:template match="/"> <html> ?。糷ead> <title>RowsetSchema</title> ?。約tyle> .stdText { font-Family:verdana; font-Size: 9px; } </style> ?。?head> ?。糱ody> ?。紅able width="100%" border="1"> <xsl:for-each select="xml/s:Schema/s:ElementType/s:attribute"> ?。紅h class="stdText"><xsl:value-of select="@type" /></th> </xsl:for-each> ?。紉sl:for-each select="xml/rs:data/z:row"> <tr> ?。紉sl:for-each select="@*"> ?。紅d class="stdText" valign="top"><xsl:value-of match="@*"/></td> </xsl:for-each> ?。?tr> ?。?xsl:for-each> ?。?table> ?。?body> </html> ?。?xsl:template> ?。?xsl:stylesheet>
這里需要注意的是關(guān)于列舉一個給定節(jié)點(diǎn)的所有屬性的語法,實(shí)際上我們需要得到任何<z:row>元素的所有屬性,字符串@*表示所有的屬性(一個屬性的名字總是需要在前面加上@,為了使用這個值,<xsl:value-of>節(jié)點(diǎn)必須設(shè)置和它匹配的屬性,用@*進(jìn)行表示。
通過使用WebBrowser控件作為你瀏覽數(shù)據(jù)的引擎,你可以使用XML和XSL把內(nèi)容從表示層中分離出去。在這種模型中,XSL的作用是作為一個標(biāo)記語言(而不是編程語言)來描述如何顯示XML數(shù)據(jù),為了增加一個新的視圖,只需要增加一個對應(yīng)的XSL文檔就可以了。事實(shí)上這種基于Web的文檔/視模型可以和MFC下的文檔/視模型進(jìn)行類比。
最后我們需要在講一下,XSL和CSS有什么不同呢?關(guān)鍵的不同是XSL是應(yīng)用在整個XML文檔的,而CSS只對HTML標(biāo)簽的顯示形式產(chǎn)生影響。XSL是一個處理文件的標(biāo)記語言,而CSS是一個屬性集合用來表示標(biāo)記語言中一個元素的屬性。而且,XSL在從XML數(shù)據(jù)流中產(chǎn)生HTML輸出的時候,能夠使用CSS,從當(dāng)前的角度看,它們是兩種不同的技術(shù)。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“基于XML桌面應(yīng)用的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!