主頁(yè) > 知識(shí)庫(kù) > 基于XML的桌面應(yīng)用

基于XML的桌面應(yīng)用

熱門標(biāo)簽:400電話辦理包年 隨州外呼調(diào)研系統(tǒng) 高德地圖地圖標(biāo)注服務(wù)中心 r語(yǔ)言數(shù)據(jù)可視化地圖標(biāo)注 東營(yíng)電銷 南寧網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營(yíng)商 如何修改多個(gè)百度地圖標(biāo)注 本地電話機(jī)器人 微信地圖標(biāo)注合并了
前面已經(jīng)提到,通過(guò)XSL,我們可以把相同的數(shù)據(jù)以不同的數(shù)據(jù)形式提交給終端客戶,一個(gè)XSL文件描述了數(shù)據(jù)的顯示方式,你可以把許多XSL和同一個(gè)XML文檔相連來(lái)提供不同的基于HTML的表示,這樣事實(shí)上,我們就可以建立基于XML的桌面應(yīng)用程序?;赪indows體系結(jié)構(gòu)的一個(gè)圖形表示如下所示:



  采用這種方法主要有兩個(gè)優(yōu)點(diǎn),首先,你可以以平臺(tái)和語(yǔ)言獨(dú)立的方式來(lái)操作數(shù)據(jù),其次,不需要編程你就可以實(shí)現(xiàn)對(duì)同樣數(shù)據(jù)的不同的視圖表示。

  實(shí)際上,你需要一個(gè)工具能夠把原始的數(shù)據(jù)轉(zhuǎn)化為XML格式化的形式,然后用HTML的格式表示出來(lái)。實(shí)際上在IE5.0中,你可以通過(guò)它對(duì)XSL的支持來(lái)實(shí)現(xiàn)數(shù)據(jù)的不同視圖??梢允褂脙?nèi)建的XSL處理器來(lái)從XML流中產(chǎn)生輸出。開發(fā)人員可以編寫不同的XSL劇本,然后用IE內(nèi)建的XSL處理器對(duì)它進(jìn)行處理。另一方面,我們可以通過(guò)ADO組件的內(nèi)在功能實(shí)現(xiàn)把記錄集轉(zhuǎn)化為XML格式,示例代碼如下:

  If Dir(XML_FILE) = " Then
    rs.Save XML_FILE, adPersistXML
  End If

  這里常量adPersistXML表示使用一個(gè)XML綱要來(lái)保存記錄集的內(nèi)容

  我們?cè)僮屑?xì)看一下Recordset對(duì)象的Save方法,其定義如下:

   Save([FileName As String], [PersistFormat As PersistFormatEnum = adPersistADTG])

  每一個(gè)參數(shù)都是可選的,但是當(dāng)你第一次把記錄集保存到磁盤上的時(shí)候,你必須指定文件的名稱。如果當(dāng)該方法執(zhí)行的時(shí)候,存在一個(gè)有效的過(guò)濾器的話,只有通過(guò)過(guò)濾的數(shù)據(jù)才能夠被保存。當(dāng)調(diào)用Recordset對(duì)象的方法Close關(guān)閉Recordset對(duì)象的時(shí)候,文件也被自動(dòng)關(guān)閉。當(dāng)Recordset被保存到磁盤上以后,你可以采用Open方法來(lái)閱讀它,具體代碼如下:

   rs.open "c:\myrs.xml"

  然后我們分析一下關(guān)于XML數(shù)據(jù)的顯示的問(wèn)題,IE5對(duì)XSL的支持是基于W3C最近的草案標(biāo)準(zhǔn)建立的。這里我們討論用VB建立一個(gè)應(yīng)用,它通過(guò)ADO接口來(lái)訪問(wèn)數(shù)據(jù)源中的數(shù)據(jù)。得到的記錄集可以以不同的格式化的形式展現(xiàn)。通過(guò)編寫XSL文檔,你可以任意的增加不同的視圖。

  比如,一旦你提取了一個(gè)結(jié)果集以后,你可以在VB中用DataGrid控件方便的顯示數(shù)據(jù),具體代碼如下:

   Set rs = New ADODB.Recordset
   rs.CursorLocation = adUseClient

   queryString = "select * from Employees"
   rs.Open queryString, "NorthWind" 'NorthWind是微軟的示例數(shù)據(jù)庫(kù),很容易在
    'ACCESS或者是SQL SERVER中找到
   rs.ActiveConnection = Nothing
   Set DataGrid1.DataSource = rs

  在許多情況下,這個(gè)的一個(gè)視圖是不夠的,你需要對(duì)每個(gè)字段進(jìn)行嚴(yán)格的控制。整個(gè)表中的記錄可能既用表格又用樹的形式表示,提供多個(gè)視圖會(huì)讓用戶感到更加舒服。 XML和XSL相結(jié)合是這種問(wèn)題的很好的解決方案,你可以充分利用IE5中的WebBrowser控件的功能直接進(jìn)行瀏覽。
  ADO組件本身不對(duì)它產(chǎn)生的XML文檔生成任何的XSL文檔。單這并不表示你不能自己編寫一個(gè)通用的XSL文檔來(lái)改變數(shù)據(jù)的顯示方式。比如為了自動(dòng)的把一個(gè)包含ADO記錄集的XML文檔以表格的形式顯示的話,需要在XML的文檔頭部增加如下的代碼:

 ?。?xml-stylesheet type="text/xsl" href="simple.xsl"?>

  這個(gè)simple.xsl文件必須放在和XML文檔相同的目錄下,它包含兩個(gè)嵌套的循環(huán),第一個(gè)循環(huán)枚舉了元素的所有屬性,這些屬性的名字作為標(biāo)題顯示在第一行,第二個(gè)循環(huán)用來(lái)輸出記錄集中的所有記錄。

  simple.xsl文件的代碼如下所表示:

 ?。?xml version="1.0"?>
 ?。紉sl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
   xmlns:html="http://www.w3.org/TR/REC-html40"
   result-ns="
   language="JScript">
  <xsl:template match="/">
 ?。糷tml>
 ?。糷ead>
 ?。紅itle>RowsetSchema</title>
  <style>
   .stdText
   {
    font-Family:verdana;
    font-Size: 9px;
   }
 ?。?style>
 ?。?head>
 ?。糱ody>
   <table width="100%" border="1">
  ?。紉sl:for-each select="xml/s:Schema/s:ElementType/s:attribute">
    <th class="stdText"><xsl:value-of select="@type" /></th>
   ?。?xsl:for-each>
   ?。紉sl:for-each select="xml/rs:data/z:row">
   ?。紅r>
    ?。紉sl:for-each select="@*">
     <td 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)于列舉一個(gè)給定節(jié)點(diǎn)的所有屬性的語(yǔ)法,實(shí)際上我們需要得到任何<z:row>元素的所有屬性,字符串@*表示所有的屬性(一個(gè)屬性的名字總是需要在前面加上@,為了使用這個(gè)值,<xsl:value-of>節(jié)點(diǎn)必須設(shè)置和它匹配的屬性,用@*進(jìn)行表示。

  通過(guò)使用WebBrowser控件作為你瀏覽數(shù)據(jù)的引擎,你可以使用XML和XSL把內(nèi)容從表示層中分離出去。在這種模型中,XSL的作用是作為一個(gè)標(biāo)記語(yǔ)言(而不是編程語(yǔ)言)來(lái)描述如何顯示XML數(shù)據(jù),為了增加一個(gè)新的視圖,只需要增加一個(gè)對(duì)應(yīng)的XSL文檔就可以了。事實(shí)上這種基于Web的文檔/視模型可以和MFC下的文檔/視模型進(jìn)行類比。

   最后我們需要在講一下,XSL和CSS有什么不同呢?關(guān)鍵的不同是XSL是應(yīng)用在整個(gè)XML文檔的,而CSS只對(duì)HTML標(biāo)簽的顯示形式產(chǎn)生影響。XSL是一個(gè)處理文件的標(biāo)記語(yǔ)言,而CSS是一個(gè)屬性集合用來(lái)表示標(biāo)記語(yǔ)言中一個(gè)元素的屬性。而且,XSL在從XML數(shù)據(jù)流中產(chǎn)生HTML輸出的時(shí)候,能夠使用CSS,從當(dāng)前的角度看,它們是兩種不同的技術(shù)。

標(biāo)簽:黃石 拉薩 果洛 西雙版納 寧夏 德州 益陽(yáng) 宿遷

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于XML的桌面應(yīng)用》,本文關(guān)鍵詞  基于,XML,的,桌面,應(yīng)用,基于,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于XML的桌面應(yīng)用》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于基于XML的桌面應(yīng)用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章