XML在.net平臺下的自定義控件的應用(2)_Xml教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:高效交換XML文檔
      XML文檔因為其固有的描述性特性而趨向于變得很羅嗦。其結果是文檔會由于被描述的數據增多而變得很長,而這種很大的文檔會在需要同其他實體進行交換時出現問題。和其他文檔(比如普通文本文件(f

      第二步,就是加入XML特性

      注意,任何xml文檔在其被處理之前最好先進行有效性驗證,提供驗證一般有兩種重要的途徑。其一就是提供DTD(文檔類型定義),實際上就是讓用戶提供指令集,然后在xml文檔加載的時候對其進行有效性分析,看是否有無效指令,簡單說就是創建一個編譯環境;另外一個就是提供一個所謂的schema。.其作用跟DTD完全一樣,只是在表現形式上好于DTD,因為它本身也是一個XML文檔。這里我采用了schema的形式,當然了,讀者用興趣也可以將其替換問相應的DTD版本。下面列出該schema的關于控件和topmenu對象的代碼,如果要看該文檔的詳細代碼,請看 “代碼.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>

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

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

      以下為引用的內容:

      <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>

      創建完xml文檔后,就要在程序里面讀取xml文檔,這里如果采用微軟的vs.net平臺開發的話,建議可以使用XMLTextReader來讀取相關信息,具體細節可以查閱MSDN。

      第三步:使用控件

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

      using 你的名字空間;(A)

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

      事實上,無論是A處的代碼還是B處的說明,都可以由VS.NET平臺自動生成,如果使用其他平臺并且不支持這種代碼的自動添加的話,就可以手動添加。添加完之后,這樣就可以和其他控件來進行使用了。而且在控件類代碼中的所有的公有的成員變量,函數分別對應于控件的屬性和方法。

      這里需要指明的就是控件必須提供兩個屬性,那就是XmlStream和XmlFile,如果用戶已經制作好了控件的XML文件(該文件描述了控件的數據),或者是已經寫好了一個xml代碼的話,可以把代碼和文件分別傳給XmlStream和XmlFile,后臺程序(就是dll文件)通過調用一些XML的閱讀器比如XmlTextReader來讀取xml數據,這樣就達到了控件支持XML屬性了,進而也增強了控件的移植性和通用性。

      本文主要討論了xml在.net平臺下控件制作方面的應用,從上面的例子可以看出,xml在數據的整合,處理方面確實有它獨特的優勢,如果你的項目中涉及到數據處理和跨平臺的問題,可以考慮應用XML。

      分享:XSL簡明教程(4)在服務器端的實現
      原著:Jan Egil Refsnes 翻譯:阿捷 四: XSL --- 在服務器端的實現 1.兼容所有的瀏覽器 在上面一章我們介紹了可以通過JavaScript調用瀏覽器的XML parser(解析軟件)來轉換XML文檔。但是

      來源:模板無憂//所屬分類:Xml教程/更新時間:2008-08-22
      相關Xml教程