稱可擴展標記語言(extensible marked language),這套語言系統由於在數據處理,跨平台等方面的獨特優勢,在近幾年風靡全球。XML語言系統把任何數據都作為“鍵”和“值”來進行處理,這一點類似於很多數據庫管理系統(DBMS),而且它與具體的機器指令無關,其存儲方式是純文本文件,因此具有出色的跨平台性。另外它允許用戶創建自己的數據指令系統,在這套指令系統的框架下,用戶可以把所有信息轉換成易於存取的數據,大大加快了開發的周期和代碼的可移植性。
既然XML這麼好,那它到底是什麼樣子的呢?最近筆者因為課題的需要,開發了一個基於.Net平台下的menu控件,並且加入了XML特性。制作的步驟如下:
第一步:制作一個.Net平台下的menu控件 .Net平台下面的自定義控件的工作原理如下:控件對應於一個類(class),控件的所有屬性通過類的成員變量來暴露,而控件的方法對應於class的成員函數。在控件被加載的手,系統會調用class的render方法,制作控件的時候,應該重載(override)這個render方法,使得在控件被加載的那 一刻,控件可以自己“繪制”自己,一般來說,在render方法裡面要將關於控件界面繪制的那些JavaScript文件放入到輸出流中。
由於這裡重要是講解後面XML的應用,所以這裡只是把自定義控件的原來簡要說明一下,下面羅列出相關對象,屬性,方法。
整個menu控件分為Topmenu,Submenu,Childrenmenu,MenuItem四個對象,其相應的信息為:
控件屬性:
ID:標識控件名字
MenubarHeight:菜單攔的高度
MenubarWidth::菜單攔的寬度
BorderWidth::邊框寬
AutoDropdown:true表示自動下拉,false表是單擊鼠標下拉
DropdownDelay:下拉時間
Menufont:字體
LocationX:菜單的x位置
LocationY:菜單的y位置
XMLFile:XML文件
XMLStream:XML流
topmenu對象屬性:
ID:同上
Text:頂層菜單的文本
Isparent:true表示有下一級菜單,否則為false(false默認)
Islink:需要用事件處理用true,否則false(false默認);
Bgcolor:背景色
Forecolor:前景色
HoveredBackcolor:鼠標放在上面的顏色
Topmenufont:字體
Linkurl:當isparent為false才有效,表示連接的url
Borderwidth:topmenu的邊框寬
Itemheight:下一級菜單的高度(必須isparent為true才有效)
Itemwidth: 下一級菜單的寬度(必須isparent為true才有效)
Submenus:含有下一級菜單的數組列表
Submenu,Childrenmenu 和MenuItem的所有屬性跟上面Topmenu一樣,這裡就不贅述了。