<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ★33°空間‰


                           ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                           ----智力比知識(shí)重要,素質(zhì)比智力重要,覺(jué)悟比素質(zhì)更重要
    posts - 110,comments - 35,trackbacks - 0
    Xml全稱可擴(kuò)展標(biāo)記語(yǔ)言(extensible marked language),這套語(yǔ)言系統(tǒng)由于在數(shù)據(jù)處理,跨平臺(tái)等方面的獨(dú)特優(yōu)勢(shì),在近幾年風(fēng)靡全球。Xml語(yǔ)言系統(tǒng)把任何數(shù)據(jù)都作為“鍵”和“值”來(lái)進(jìn)行處理,這一點(diǎn)類似于很多數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),而且它與具體的機(jī)器指令無(wú)關(guān),其存儲(chǔ)方式是純文本文件,因此具有出色的跨平臺(tái)性。另外它允許用戶創(chuàng)建自己的數(shù)據(jù)指令系統(tǒng),在這套指令系統(tǒng)的框架下,用戶可以把所有信息轉(zhuǎn)換成易于存取的數(shù)據(jù),大大加快了開(kāi)發(fā)的周期和代碼的可移植性。



      既然XML這么好,那它到底是什么樣子的呢?最近筆者因?yàn)檎n題的需要,開(kāi)發(fā)了一個(gè)基于.net平臺(tái)下的menu控件,并且加入了xml特性。制作的步驟如下:



      第一步:制作一個(gè).net平臺(tái)下的menu控件



      .net平臺(tái)下面的自定義控件的工作原理如下:控件對(duì)應(yīng)于一個(gè)類(class),控件的所有屬性通過(guò)類的成員變量來(lái)暴露,而控件的方法對(duì)應(yīng)于class的成員函數(shù)。在控件被加載的手,系統(tǒng)會(huì)調(diào)用class的render方法,制作控件的時(shí)候,應(yīng)該重載(override)這個(gè)render方法,使得在控件被加載的那 一刻,控件可以自己“繪制”自己,一般來(lái)說(shuō),在render方法里面要將關(guān)于控件界面繪制的那些javascript文件放入到輸出流中。



      由于這里重要是講解后面XML的應(yīng)用,所以這里只是把自定義控件的原來(lái)簡(jiǎn)要說(shuō)明一下,下面羅列出相關(guān)對(duì)象,屬性,方法。



      整個(gè)menu控件分為T(mén)opmenu,Submenu,Childrenmenu,MenuItem四個(gè)對(duì)象,其相應(yīng)的信息為:



      控件屬性:



       ID:標(biāo)識(shí)控件名字



       MenubarHeight:菜單攔的高度



       MenubarWidth::菜單攔的寬度



       BorderWidth::邊框?qū)?br />


       AutoDropdown:true表示自動(dòng)下拉,false表是單擊鼠標(biāo)下拉



       DropdownDelay:下拉時(shí)間



       Menufont:字體



       LocationX:菜單的x位置



       LocationY:菜單的y位置



       XmlFile:xml文件



       XmlStream:xml流



       topmenu對(duì)象屬性:



       ID:同上



       Text:頂層菜單的文本



       Isparent:true表示有下一級(jí)菜單,否則為false(false默認(rèn))



       Islink:需要用事件處理用true,否則false(false默認(rèn));



       Bgcolor:背景色



       Forecolor:前景色



       HoveredBackcolor:鼠標(biāo)放在上面的顏色



       Topmenufont:字體



       Linkurl:當(dāng)isparent為false才有效,表示連接的url



       Borderwidth:topmenu的邊框?qū)?br />


       Itemheight:下一級(jí)菜單的高度(必須isparent為true才有效)



       Itemwidth: 下一級(jí)菜單的寬度(必須isparent為true才有效)



       Submenus:含有下一級(jí)菜單的數(shù)組列表



       Submenu,Childrenmenu 和MenuItem的所有屬性跟上面Topmenu一樣,這里就不贅述了。



     第二步,就是加入XML特性



      注意,任何xml文檔在其被處理之前最好先進(jìn)行有效性驗(yàn)證,提供驗(yàn)證一般有兩種重要的途徑。其一就是提供DTD(文檔類型定義),實(shí)際上就是讓用戶提供指令集,然后在xml文檔加載的時(shí)候?qū)ζ溥M(jìn)行有效性分析,看是否有無(wú)效指令,簡(jiǎn)單說(shuō)就是創(chuàng)建一個(gè)編譯環(huán)境;另外一個(gè)就是提供一個(gè)所謂的schema。.其作用跟DTD完全一樣,只是在表現(xiàn)形式上好于DTD,因?yàn)樗旧硪彩且粋€(gè)XML文檔。這里我采用了schema的形式,當(dāng)然了,讀者用興趣也可以將其替換問(wèn)相應(yīng)的DTD版本。下面列出該schema的關(guān)于控件和topmenu對(duì)象的代碼,如果要看該文檔的詳細(xì)代碼,請(qǐng)看 “代碼.doc”。



      menu.xdr:



    <?xml version="1.0" encoding="UTF-8"?>



    <Schema name="menus" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">



    <description>



    menus schema used to validate menu.xml



    </description>



    <ElementType name="menu" model="closed" content="empty">



    <AttributeType name="id" dt:type="string" required="yes"/>



    <atttibute type="id"/>



    <element name="topmenu" model="closed" minOccurs="0" maxOccurs="*" content="empty"/>



    </ElementType>







    <ElementType name="topmenu" model="closed" content="empty">



    <AttributeType name="id" dt:type="string" required="yes"/>



    <AttributeType name="text" dt:type="string" required="yes"/>



    <AttributeType name="linkurl" dt:type="string" required="yes"/>



    <AttributeType name="isparent" dt:type="string" required="yes"/>



    <atttibute type="id"/>



    <atttibute type="text"/>



    <atttibute type="linkurl"/>



    <atttibute type="isparent"/>



    <element name="submenu" model="closed" minOccurs="0" maxOccurs="*" content="empty"/>



    </ElementType>







    <ElementType name="submenu" model="closed" content="empty">



    <AttributeType name="id" dt:type="string" required="yes"/>



    <AttributeType name="text" dt:type="string" required="yes"/>



    <AttributeType name="linkurl" dt:type="string" required="yes"/>



    <AttributeType name="isparent" dt:type="string" required="yes"/>



    <atttibute type="id"/>



    <atttibute type="text"/>



    <atttibute type="linkurl"/>



    <atttibute type="isparent"/>



    <element name="childrenmenu" model="closed" minOccurs="0" maxOccurs="*" content="empty"/>



    </ElementType>







    <ElementType name="childrenmenu" model="closed" content="empty">



    <AttributeType name="id" dt:type="string" required="yes"/>



    <AttributeType name="text" dt:type="string" required="yes"/>



    <AttributeType name="linkurl" dt:type="string" required="yes"/>



    <AttributeType name="isparent" dt:type="string" required="yes"/>



    <atttibute type="id"/>



    <atttibute type="text"/>



    <atttibute type="linkurl"/>



    <atttibute type="isparent"/>



    <element name="menuitem" model="closed" minOccurs="0" maxOccurs="*" content="empty"/>



    </ElementType>



    <ElementType name="menuitem" model="closed" content="empty">



    <AttributeType name="id" dt:type="string" required="yes"/>



    <AttributeType name="text" dt:type="string" required="yes"/>



    <atttibute type="id"/>



    <atttibute type="text"/>



    </ElementType>



    </Schema>



      如果您對(duì)html比較熟悉的話,相信上面的代碼即使是以前沒(méi)有接觸過(guò)也應(yīng)該清楚了,在.xdr中,有兩個(gè)對(duì)象,其一是元素,用前綴 ElementType 來(lái)定義,另外一個(gè)是該元素所對(duì)應(yīng)的屬性,用前綴atttibuteTpye,定義完這兩個(gè)對(duì)象后,就是要將它們實(shí)例化,對(duì)應(yīng)的前綴分別是Element 和atttibute,然后您就可以使用這兩種已經(jīng)實(shí)例化了的對(duì)象,就象使用html中<a>,<l>,<body>,<head>等標(biāo)記一樣。



      為了更加清晰的說(shuō)明上面的代碼,我們這里舉一個(gè)例子,相信讀者一目了然:



    <menus xmlns='x-schema:Menu.xdr'>



    <menu id='menuBar1'>



    <topmenu id="xjtu" text="xjtu" isparent="true" linkurl="xjtu"></topmenu>



    <submenu id="sina" text="sina" isparent="false" linkurl="sina"></submenu>



    <topmenu id="sohu" text="sohu" isparent="false" linkurl="sohu"></topmenu>



    </menu></menus>





      創(chuàng)建完xml文檔后,就要在程序里面讀取xml文檔,這里如果采用微軟的vs.net平臺(tái)開(kāi)發(fā)的話,建議可以使用XmlTextReader來(lái)讀取相關(guān)信息,具體細(xì)節(jié)可以查閱MSDN。



      第三步:使用控件



      創(chuàng)建完了menu控件,現(xiàn)在就是在.net平臺(tái)下面來(lái)使用它。首先要在vs.net平臺(tái)下面編譯該控件,如果編譯成功就可以使用它了。使用.net自定義控件和使用一般的ActiveX控件很相似,啟動(dòng)vs.net平臺(tái)下面的部件箱(可以直接在ToolBar上右擊鼠標(biāo)來(lái)得到),注意我們制作是不是基于COM組件,而是ASP.net組件,所以從這點(diǎn)上它與COM組件有本質(zhì)的不同,通過(guò)Browse按鈕可以選擇該控件對(duì)應(yīng)的dll文件,將其添加進(jìn)你的工程。下面你還要在你的程序代碼中加入下面的代碼(其他代碼略)



      using 你的名字空間 ; (A)



      還應(yīng)該在behind code加入該控件的聲明 (B)



      事實(shí)上,無(wú)論是A處的代碼還是B處的說(shuō)明,都可以由VS.NET平臺(tái)自動(dòng)生成,如果使用其他平臺(tái)并且不支持這種代碼的自動(dòng)添加的話,就可以手動(dòng)添加。添加完之后,這樣就可以和其他控件來(lái)進(jìn)行使用了。而且在控件類代碼中的所有的公有的成員變量,函數(shù)分別對(duì)應(yīng)于控件的屬性和方法。



      這里需要指明的就是控件必須提供兩個(gè)屬性,那就是XmlStream和XmlFile,如果用戶已經(jīng)制作好了控件的XML文件(該文件描述了控件的數(shù)據(jù)),或者是已經(jīng)寫(xiě)好了一個(gè)xml代碼的話,可以把代碼和文件分別傳給XmlStream和XmlFile,后臺(tái)程序(就是dll文件)通過(guò)調(diào)用一些XML的閱讀器比如XmlTextReader來(lái)讀取xml數(shù)據(jù),這樣就達(dá)到了控件支持xml屬性了,進(jìn)而也增強(qiáng)了控件的移植性和通用性。



      本文主要討論了xml在.net平臺(tái)下控件制作方面的應(yīng)用,從上面的例子可以看出,xml在數(shù)據(jù)的整合,處理方面確實(shí)有它獨(dú)特的優(yōu)勢(shì),如果你的項(xiàng)目中涉及到數(shù)據(jù)處理和跨平臺(tái)的問(wèn)題,可以考慮應(yīng)用XML.。
    posted on 2006-09-30 11:44 圣域飛俠 閱讀(139) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av成人无码久久精品| 亚洲欧洲国产精品你懂的| 9久热这里只有精品免费| 久久亚洲伊人中字综合精品| 免费观看美女用震蛋喷水的视频| 亚洲欧美成人一区二区三区 | 四虎在线播放免费永久视频 | 宅男666在线永久免费观看| 国产99久久久久久免费看| 久久精品国产亚洲AV麻豆网站| 四虎影视大全免费入口| 野花香高清视频在线观看免费 | 亚洲精品免费在线观看| 午夜视频免费成人| 性xxxxx大片免费视频| 亚洲av最新在线观看网址| 亚洲成色WWW久久网站| 国产美女精品视频免费观看 | 国产成人综合亚洲AV第一页| 1024免费福利永久观看网站| 国产精品美女免费视频观看| 亚洲一卡2卡4卡5卡6卡残暴在线| 国产亚洲情侣一区二区无码AV| 91免费精品国自产拍在线不卡| aaa毛片视频免费观看| 亚洲av无码专区在线电影天堂| 亚洲AV色香蕉一区二区| 亚洲国产成人久久综合一区77| 国产免费女女脚奴视频网| 三年片免费高清版| 日本亚洲欧美色视频在线播放| 亚洲视频.com| 亚洲中文字幕无码爆乳AV| 高清国语自产拍免费视频国产| 亚洲国产精品免费视频| 本道天堂成在人线av无码免费| 亚洲色欲色欱wwW在线| 亚洲狠狠ady亚洲精品大秀| 亚洲中文字幕不卡无码| 亚洲成a人片在线播放| 韩国二级毛片免费播放|