第11章 XML Schema Object Model物件模型

Slides:



Advertisements
Similar presentations
元大京華證券 組員名單 : A 楊之奇 A 廖本揚 A 宋俊承 A 陳冠廷 A 郭峻瑋 A 指導教授 : 許素華 副教授.
Advertisements

達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
口臭不苦惱 清新口氣大作戰 口臭不只破壞人際的互動,更是 身體發出的警訊,不能輕忽。 康健雜誌 89 期文. 梁煙純 攝影.邱瑞金.
主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
概念導向命題技巧與試題分析 臺灣師大地理系 陳國川. 教學評量是一種『抽樣調查』 實施教學評量時,需具備二項條件: 其一,瞭解命題的理論及其實踐的方法; 其二,瞭解各種題型的功能與命題方式。 壹、前言.
第十八章 林肯大郡 第十八章 林肯大郡災變緊急搶救應變措施 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊造成二十八人罹難八十戶住宅倒塌的慘劇 此災變要喚起國人的重視 本章介紹搜救行動緊急應變措施。
高峰植物園行前解說 2005/12/07 By 羽明. 陽性先驅物種 陽性植物 --- 陽光需求量大 陰性 ( 或耐蔭性 ) 植物 --- 陽光需求量少, 或 日照太強反而無法生存 先驅植物 --- 森林大火或土石流地震後產生的 裸露空地, 先生長出來的植物.
報 告 人 : 胡 嘉 琪 ˙ˇ˙ 、 王 紫 庭 = ˇ = 台灣夜市文化 作者: 郭明澤‧私立明道高中‧綜二 4 班 馬炯修‧私立明道高中‧綜二 4 班.
5 ˙ 1 第五章 生物的協調作用 5 ‧ 1 神經系統. 5 ˙ 1 人體的神經系統 1. 協調動物生理反應的系統: 神經 系統、 內分 泌 系統。 2. 神經系統負責 統整 和 協調 。分為 中樞 神經 和 周圍 神經。 (1) 中樞神經包括 腦 和 脊髓 。 (2) 周圍 神經包括 腦神經 和.
从《西游》看大学生的成长 主讲人:颜廷学 时间: 地点:演艺大楼流行剧场.
新员工培训 设计部 思安新能源股份有限公司 主讲人: 韩少华 时 间:
前言:河流的主要功能 1. 交通運輸 優點-運費低廉,維護費用低 缺點-速度慢,裝載費時,不能到達生產區或消費區 的末端,需要轉載。 尚受到河流網路,河口位置,水量變化,河床 狀況,冰封時期 2. 水資源系統.
幽夢影~張潮 小佑子工作室 關於《幽夢影》 作者張潮,記寫他個人對人生世事之體驗透悟的 書。 書中文字,全為「語錄」形式,屬於格言,也是 最精鍊的隨筆。 全書可分為九卷:論才子佳人、論人與人生、論 朋友知己、論讀書、論閒情逸趣、論立身處世、 談文論藝、論四時佳景、論花鳥蟲魚。
成人高考高起点 语文 冲刺班 主讲老师:邓君媚. 复习指导 高考语文含四大块内容: 语言知识和语言表达,古代诗文阅读,现 代文阅读,写作。 在全面复习的前提下,按照《考试大纲》 的要求,要做好思路整理,建立高考的整体框 架的工作。认真归纳整理基础知识、培养基本 能力,复习做到有的放矢。 复习指导.
老师,我可以不 爱 吗? 山东省淄博市张店区实验中学 杜桂兰 星期一的早晨,我紧张而又兴奋,因为 我的赛教课就要开始了。 这是一次级别很 高 的竞赛。
财政部 国家税务总局 中国人民银行(央行) 银监会 证监会 保监会. 法定存款准备金率 利率 税率 政府投资 楼继伟,周小川,易纲.
油蔴菜籽 指導老師:陳瑜霞 學生: 商設一甲 謝旻璇 車輛三乙 許勝傑 工管四甲 彭凱雲. 作者介紹: 廖輝英( 1948 年生)臺大中文系畢業。 從初三開始寫作,早期作品多以散文為主,大四 畢業時才暫時封筆。畢業後進了廣告界,成為廣 告文案好手,後為企畫主管,在廣告界縱橫十餘 年,也曾任職於建設公司,辦過社區報高雄一周。
蘭嶼情人洞傳說 林庭羽製 林庭羽製. 台灣的蘭花特別多,台灣有個蘭 嶼島,島上面的蘭花更多.所以 叫蘭嶼.這裡留下了動人的傳說。
職業訪談報告. 成員 : 鐘怡君 劉沛君 謝明達 賴映辰.
南台科大幼保實習課程 見習幼兒園心得報告 夜四技幼保四甲 998i0021 黃欣婷.
第一章 生殖 1‧2 無性生殖.
高教三十条 — 科技创新能力提升 科技创新能力提升工程方案起草小组 2013年7月4日.
你不可不知之 十二年國教二三事 教務主任:傅瑞琪.
鞋 楦 的 材 質.
最古怪的15種動物.
走! 一起去拜訪筏子溪.
台灣文學館之旅.
單車環島之旅 組員: 495D0072 胡閎智 495D0074 何冠緯 495D0020 王怡雯 495D0047 葉亭君
 耕地分割 及 執 行 內政部地政司 視察:林玲女.
~完備、周密、迅速 ~ 行政院農業部畜產試驗所
建筑设计基础讲义 (02-1) 建筑水彩渲染.
現代文學導讀 (中國現代散文發展的歷史軌道)
第 12 章 SOAP技術.
谨以此文—— 送给所有的人.
方 孝 孺 指喻.
保護地球人人有責:我能做的事 若想讓地球、人類社會明天會更好的話,可以考慮日常生活中採取什麼綠色行動,逐步恢復按上天設計大自然規定的方式做人,從而減少個人的「生態足印」,爭取可以延續的未來。 
小 王 子 <第六組> 組長: 謝汶芳 組員: 劉佳蓉 曹展愛 陳建妏
情緒管理與壓力調適 連廷嘉.
據說: 烏鴉有四種--- 巨烏 祥烏 鳳烏 慈烏~ 知恩 感恩 報恩.
桃園傅小弟遭刺青施虐事件 指導老師:高家斌 班級:幼保四甲 姓名與學號: 496I0004 程千芸、496I0010 林昀嫻
北科大學士學位 冷凍空調 甲、乙、丙 級技術士 三年工作經驗 大一階段 專精訓練 大三階段 回流訓練.
9.2.2 会计基本法律制度 一、会计机构和会计人员制度 二、会计核算制度
指導教授:林劭仁老師 組員:范紋綺、王宣惠、蔡雅玲 王思樺、陳可馨、吳芷容.
“三生教育”专题 生命·生存·生活.
校园信息管理系统 河北科技大学网络中心 2000/4/10.
做好就业与自主创业的准备.
寻觅节日诗情.
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
世界各國的成人儀式 劉 奕 麟老師.
——奧科特公開及內部培訓 系列課程(三)之十一
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
导 论.
全球暖化 想知道全球暖化的嚴重性嗎? 那就繼續看下去吧!! 組員:陳儀君60524 蘇鈺祺60526 于玉琳60528 林宥嫻60521.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
----银行间的比较 论资本构成与充足率 淡 彩 的 黑 板 淡 彩 的 黑 板 金融73班 王艺霏 王 英
在 线 考 试 系 统 的 设 计 学 生: 班 级: 指导老师:.
经 络 学.
電 子 工 程 系 資料庫系統期末報告 門市人流管理系統 組員: 吳事佳 楊琮琪
目錄 前言 八達通 使用八達通的好處 八達通的種類 輕鐵 輕鐵的設施 輕鐵的發展 輕鐵與西鐵
Ajax编程技术 第一章 Ajax简介.
Schema 與DTD的比較 XML Schema 的特性 XML 資料型態 XML Schema 屬性宣告
第7章 Web伺服器檔案與XML文件的處理 7-1 System.IO名稱空間的基礎 7-2 伺服器的資料夾與檔案操作
一、選擇題 ( )1、下列敘述何者錯誤? (A)由彈弓射出的石子具有能量 (B)一物體具有作功的本領,則此物具有能 量 (C)被壓縮的彈簧具有能量,被拉長的彈簧 則不具有能量 (D)將地面的重物,吊到高處則此物具有能 量。 C.
张孝祥IT课堂 -深入体验Java Web开发内幕
第 1 章 簡介XML.
微信商城系统操作说明 色卡会智能门店.
風能 主題:風能 班級:四環工一A 組員:林明哲 4980N047 江信宏 4980N079
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
手机淘宝“变形”产品—微淘 操作流程指南 (内测版).
Presentation transcript:

第11章 XML Schema Object Model物件模型

11-1 Schema Object Model物件模型 SOM的基礎 SOM與XML Schema 為什麼需要使用SOM SOM的介面物件

SOM的基礎 在MSXML 4.0版提供全新「Schema Object Model」(SOM),這是一組瀏覽物件可以直接存取W3C XML Schema Definition(XSD)的Schema文件。 SOM提供一組介面物件存取XML Schema文件的元素資訊,當使用Schema Cache載入XML Schema,這個Cache是使用DOM物件的IXMLDOMSchemaCollection2介面來存取Schema,在取得Schema,就可以使用SOM物件存取XML Schema文件的資訊。

SOM與XML Schema 在將XML Schema文件載入Schema Cache後,我們就可以取得指定的XML Schema,然後使用SOM提供的介面物件從Schema文件的根元素開始,存取各Schema元素的內容。 在XML Schema文件最上層包含名稱空間的宣告和Schema元素的定義,然後是element元素的宣告,包含第二層complexType元素的宣告,此時我們可以使用SOM介面物件,由上而下一層一層的瀏覽XML Scheama的元素,然後取出所需的資訊。

為什麼需要使用SOM SOM的目的是取得XML Schema文件的架構或指定XML元素的資料型態,不只如此,SOM還可以從XML Schema建立自訂的文件架構。 不同於DOM,SOM瀏覽XML Schema文件的方式和DOM有些不同,DOM是直接剖析XML文件成樹狀的節點結構,而SOM則是取得XML Schema在編譯後的架構,以元素的繼承關係來取得各元素,其架構並不同於原來XML Schema文件的架構。

SOM的介面物件

11-2 載入XML Schema文件 載入XML Schema文件 XML DOM與SOM 取得Schema文件下一層的元素

載入XML Schema文件-1 現在筆者使用VBScript語法的ASP程式建立Schema Cache,如下所示: Set objSchemaCache = CreateObject("MSXML2.XMLSchemaCache.4.0") 上述程式碼建立Schema Cache,然後我們就可以使用add方法載入XML Schema文件,如下所示: objSchemaCache.add "", Server.MapPath("Ch11-2.xsd") 上述方法的第一個參數是名稱空間的URI,如果需要同時載入擁有名稱空間的Schema文件時,就需要指定此名稱。

載入XML Schema文件-2 當XML Schema文件載入Schema Cache後,我們可以使用getSchema文件取得指定的Schema文件, Set objSchema = objSchemaCache.getSchema("") 上述方法的參數就是前面指定的URI,在取得ISchema介面物件後,可以使用SOM介面取得Schema文件的元素。

載入XML Schema文件-3 例如:使用ISchema介面物件的elements屬性取得所有element元素的ISchemaItemCollection介面物件,如下所示: For Each objEle in objSchema.elements ' 元素名稱 result = result & "名稱: " & objEle.name & " - " ' 取得元素的資料型態 set objType = objEle.type ……... Next

XML DOM與SOM-1 在前面曾經說過SOM主要的目的是配合DOM取得指定元素的資料型態,在建立Schema Cache物件objSchemaCache且載入XML Schema文件後,我們就可以建立DOM物件,如下所示: Set objxmlDom = Server.CreateObject("Msxml2.DOMDocument.4.0") objxmlDom.async = False Set objxmlDom.schemas = objSchemaCache objxmlDom.load(Server.MapPath("Ch11-2.xml")) 上述程式碼在建立DOM物件後,使用schemas屬性指定使用的Schemas。

XML DOM與SOM-2 在使用load方法載入XML文件後,就可以使用XPath語言取得指定的節點物件,如下所示: objxmlDom.setProperty "SelectionLanguage", "XPath" Set objNode = objxmlDom.selectSingleNode("//job") 上述指令指定使用XPath語言,取得所有的job元素(事實上只有一個),在取得節點元素後,可以取得對應的XML Schema元素,如下所示: Set objEle = objxmlDom.namespaces.getDeclaration(objNode) 上述程式碼使用getDeclaration方法取得對應的Schema元素,換句話說,我們可以取得此XML元素使用資料型態的相關資訊。

取得Schema文件下一層的元素-1 因為XML Schema文件的element元素可能擁有complexType的子元素,而且complexType元素可以擁有element的子元素,SOM的介面物件可以對應Schema元素,同樣也提供相關屬性,可以瀏覽其子元素,使用的是IShemaItem和ISchemaItemCollection介面物件。

取得Schema文件下一層的元素-2 當我們使用ISchema介面物件的types屬性取得第一層any、simpleType或complexType元素,以此例的XML Schema只有complexType元素,如下所示: Set objComplexTypes = objSchema.types For i = 0 To objComplexTypes.length - 1 result=result&"complexType元素名稱: " & _ objComplexTypes(i).name & "<BR>" Next

取得Schema文件下一層的元素-3 然後使用ISchemaItem介面物件的索引值取得指定物件,這是ISchemaComplexType介面物件,可以使用contentModel屬性取得ISchemaModelGroup介面物件,也就是complexType元素的子元素,如下所示: Set objContentModelGroup = objComplexTypes(0).contentModel Set objItems = objContentModelGroup.particles result = result & "第一個元素: " & objItems(0).Name & "<BR>" result = result & "第二個元素: " & objItems(1).Name & "<BR>" result = result & "第三個元素: " & objItems(2).Name & "<BR>"

取得Schema文件下一層的元素-4 對應到XML Schema的元素,如下所示: <xs:complexType name="jobType"> <xs:sequence> <xs:element ref="companyname"/> <xs:element ref="title"/> <xs:element ref="description"/> </xs:sequence> <xs:attribute name="code" type="xs:ID" use="required"/> </xs:complexType>

11-3 顯示XML Schema的元素 處理element元素 處理complexType元素 處理simpleType元素 ISchemaType介面的資料型態 ISchemaModelGroup介面的Indicators元素

處理element元素-1 Schema的element元素是ISchemaElement介面物件,因為ISchemaElement是繼承自ISchemaItem,所以可以使用其id屬性取得Schema元素的id屬性值和name屬性的元素名稱。

處理element元素-2 ISchemaElement介面物件的相關屬性,如下表所示:

處理element元素-3 因為ISchemaElement介面物件是繼承自ISchemaParticle介面物件,所以可以使用下表的兩個屬性取得element元素的屬性值,如下表所示:

處理complexType元素 Schema的complexType元素是ISchemaComplexType介面物件,其相關的屬性,如下表所示:

處理simpleType元素-1 simpleType元素並沒有對應的SOM介面物件,顯示simpleType元素的資訊,就是使用ISchemaType介面物件的屬性。 我們可以使用baseTypes屬性檢查這是單一基本資料型態或多資料型態的simpleType,也就是restriction/extension元素的base屬性。

處理simpleType元素-2 If條件判斷擁有多少基本資料型態,如果不只一個,可以使用For Each迴路顯示所有的資料型態,如果只有一個,就是顯示ISchemaType的屬性。 If objType.baseTypes.length > 1 Then ' 多基本資料型態 For Each oType in objType.baseTypes output = output & "資料型態: " & oType.name Next Else ' 單一資料型態 ……… End If

ISchemaType介面的資料型態-1

ISchemaType介面的資料型態-2 屬性可以取得simpleType的列舉式資料型態和正規語言的設定,如果使用enumneration屬性取得物件的length屬性大於0,表示這個simpleType或complexType屬於一種列舉資料型態,如下所示: If objType.enumeration.length > 0 Then For Each item in objType.enumeration output = output & "enumeration屬性: " & item & "<BR>" Next End If

ISchemaType介面的資料型態-3 正規語言使用的是patterns屬性,如下所示: If objType.patterns.length <> 0 Then For Each oPattern in objType.patterns output = output & "pattern屬性: " & oPattern & "<BR>" Next End If 上述程式碼使用For迴路顯示正規語言的範本字串。

ISchemaModelGroup介面的Indicators元素-1 ISchemaModelGroup介面物件是用來處理all、choice和sequence等的Indicators元素,使用ISchemaType介面物件的contentModel屬性可以取得使用的Indicator元素,如下所示: Set objIndicator = objType.contentModel If objIndicator.itemType = SOMITEM_ALL Then result = result & "all元素: " For Each item in objIndicator.particles result = result & "[" & item.name & "]" Next End If

ISchemaModelGroup介面的Indicators元素-2 If objIndicator.itemType = SOMITEM_CHOICE Then result = result & "choice元素: " For Each item in objIndicator.particles result = result & "[" & item.name & "]" Next End If If objIndicator.itemType = SOMITEM_SEQUENCE Then result = result & "sequence元素: "

11-4 顯示XML Schema的屬性-1 在處理XML Schema元素後,接下來我們可以處理元素的屬性,也就是ISchemaAttribute介面物件,只需使用下表的attributes屬性,就可以取得ISchemaItemCollection介面物件集合,如下表所示:

11-4 顯示XML Schema的屬性-2 然後使用ISchemaAttribute介面物件屬性取得屬性資料,其相關屬性,如下表所示: