XML 進階與應用 數位芝麻網路公司 XML講師:蔡斐婷.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

數位典藏聯合目錄計畫 執行經驗談 主講人:范紀文.
以XML可延伸式標注語言建立文章標誌系統研究- 以蘇軾詩為範圍
10-1 資料庫管理系統簡介 10-2 關聯式資料模式和查詢語言 10-3 Access 簡介 10-4 XML 簡介
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
通訊科技教育改進計畫 「網路應用與服務組」 行動電子商務課程 XML之簡介.
网页制作 第一讲
第五章:JDBC与数据库 第一讲.
JavaScript中常用的互動方式 認識簡單的交談與基本的運算.
DREAMWEVAER MX 2004入门 楼斌 BBS ID:lou 生命科学学院
网页 设计与制作.
XML 第05讲 使用CSS显示XML.
第十 章 XML与数据库的交换 10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
《网页设计与制作》 教学课件 主讲人:湖南铁道职业技术学院 陈承欢
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
Google App Engine Google 應用服務引擎.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
ASP VBScript 基础知识.
教師: 陳明瑤 電郵: 網際網路應用-網頁設計3 教師: 陳明瑤 電郵:
EEI-XML 教學.
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
XSL簡介 XSLT 樣版規則及樣式 範本元素 排序元素
LINQ 建國科技大學 資管系 饒瑞佶.
AJAX基础.
第 3 章 XML文件的轉換 –XSLT與XPath
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
第八章 利用SELECT查詢資料.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
XSL: Extensible Stylesheet Language
ASP动态网页设计实用教程 主讲教师: 开课单位:.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
JavaScript 靜宜大學 資管系 楊子青.
單元5-1:XSL XML的轉換語言 王豐緒 銘傳大學資工系.
第3 章 VBScript的控制结构.
App Inventor2呼叫PHP存取MySQL
Java 程式設計 講師:FrankLin.
課程名稱:_____________ 指導教授:_____________
XML基礎課程 5 數位芝麻網路公司 XML講師:蔡斐婷.
網頁切換移轉 JS vs. ASP.NET.
中文缺字在數位典藏系統之應用 ~網頁缺字處理技術
网 站 设 计 与 建 设 Website design and developments
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
此簡報可能會牽涉到聽眾的討論活動,也就是所謂的執行項目。因此在進行簡報時﹐可充份利用 PowerPoint 來記錄這些執行項目:
<title> XML與XQuery ,新一代資料儲存標準 </title>
2.2 Web界面设计 信息工程系 向模军 Tel: QQ:
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
第 19 章 XML記憶體執行模式.
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
Ajax编程技术 第六章 调试与错误处理.
张孝祥IT课堂 -深入体验Java Web开发内幕
第 1 章 簡介XML.
Ch04 VB.NET的流程控制 網頁程式設計.
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
C# 基本語法、變數.
CH05. 選擇敘述.
挑戰C++程式語言 ──第8章 進一步談字元與字串
XML備份MySQL資料庫 <html> <head>
利用 EditorConfig 自訂文字編輯器設定
JQuery 標籤操作 建國科技大學 資管系 饒瑞佶 2013/4 V1.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
Dreamweaver 進階網頁製作 B 許天彰.
Brief Guide of FrontPage
Cloud Training Material- 事件 Sherman Wang
JavaScript 教师:魏小迪
西南科技大学网络教育系列课程 动态网页设计(JSP) 补充 JSP操作XML文件.
第17章 PHP應用實例探討 17-1 PHP應用實例探討 17-2 圖片版的訪客計數 17-3 訪客留言簿 17-4 聊天室
Presentation transcript:

XML 進階與應用 數位芝麻網路公司 XML講師:蔡斐婷

DTD範例 <?xml version="1.0"?>  <!ELEMENT EMAIL (TO+ , FROM , CC* , SUBJECT? , BODY?> <!ELEMENT TO (#PCDATA)>    <!ELEMENT FROM (#PCDATA)>    <!ELEMENT CC (#PCDATA)>    <!ELEMENT SUBJECT (#PCDATA)>    <!ELEMENT BODY (#PCDATA)> <!ENTITY SIGNATURE "Bill">

DTD範例 <?xml version="1.0"?> <!DOCTYPE EMAIL SYSTEM "mail.dtd"> <EMAIL>  <TO>Jodie@msn.com</TO>  <FROM>Bill@msn.com</FROM>  <CC>Philip@msn.com</CC>  <SUBJECT>My First DTD</SUBJECT>  <BODY>Hello , World ! This is &SIGNATURE;. Take Care! </BODY>  <SIGNATURE>&SIGNATURE;.</SIGNATURE> </EMAIL>

DTD 進階 參數實體(Parameter Entities) 雖然參數實體與一般實體工作的方式相同,但是他們在語意上有個重要的不同點。參數實體在宣告和參照中都使用百分比符號 「%」。而在實體宣告中,百分比符號「%」是跟在關鍵字!ENTITY之後、實體名稱之前。如下面的例子所示(請注意在%前後的空白是必須的): <!ENTITY % ENCRYPTION "40bit CDATA #IMPLIED 128bit CDATA #IMPLIED">現在這個實體便可以在DTD文件其他的地方被參照,舉例來說: <!ELEMENT EMAIL (TO+, FROM, CC*, BCC*, SUBJECT?, BODY?)>  <!ATTLIST EMAIL   LANGUAGE (Western|Greek|Latin|Universal) "Weatern"   ENCRYPTED %ENCRYPTION;   PRIORITY (NORMAL|LOW|HIGH) "NOMAL">請注意除了用%代替&之外,參數實體參照(%ENCRYPTION;)使用相同基本格式來產生實體參照。而在實體參照的%記號後面也不需要加空白。 Note 參數實體僅限於在DTD中使用。您不能在XML文件元素中參照參數實體。

整合數個外部DTD定義 範例:Word 公文系統 <?xml version="1.0" encoding="BIG5"?> <!DOCTYPE BOOK SYSTEM "3-14.dtd"> <BOOK> <TITLE> <CAPTION>書籍資料</CAPTION> </TITLE> <BODY> <NAME>XML程式設計</NAME> <WRITER>黃中杰</WRITER> <PRICE>500</PRICE> <PUBLISHER>知城數位科技</PUBLISHER> <AMOUNT>500</AMOUNT> </BODY> </BOOK>

3-14.dtd <?xml version="1.0"?> <!ENTITY % TITLE SYSTEM "3-14a.dtd"> %TITLE; <!ENTITY % BODY SYSTEM "3-14b.dtd"> %BODY; <!ELEMENT BOOK (TITLE,BODY)>

3-14a.dtd <?xml version="1.0"?> <!ELEMENT TITLE (CAPTION)> <!ELEMENT CAPTION (#PCDATA)>

3-14b.dtd <?xml version="1.0"?> <!ELEMENT BODY (NAME,WRITE,PRICE,PUBLISHER)> <!ATTLIST BODY LANGUAGE (English|Chinese|Japanese) "Chinese" ENCRYPTED CDATA #IMPLIED PRIORITY (NORMAL|HIGH|LOW) "NORMAL"> <!ELEMENT NAME (#PCDATA)> <!ELEMENT WRITER (#PCDATA)> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE HIDDEN CDATA #FIXED "TRUE"> <!ELEMENT PUBLISHER (#PCDATA)>

XSL Pattern語法與範例 / 若一個模式是以/字元作開頭,則表示要由 XML文件的根節點開始運作 // 若一個模式是以//字元作開頭,可以匹配旗 下任意深度的節點 . 指的是目前所採用的節點 @ 用來指明某特定屬性 * 萬用字元,選擇任一元素 @* 屬性的萬用字元 ! 對特定節點用某個XSL 資訊方法 示範pattern

/ 我們可以在一個查詢之前使用單一的前置斜線(/),來指定目錄與文件的root層級是相關的(假如我們未加上前置斜線,則會預設所表示的是root層級,所以不一定總是需要斜線)。這個情形如下所示: /CATALOG/PLANT/LIGHT這告訴處理器從文件的root層級開始尋找CATALOG/PLANT/LIGHT型態,既然root層級可以不需加上前置斜線(/),同樣的查詢方式可能為: CATALOG/PLANT/LIGHT

// 另一個選擇(Selection)運算元為兩條前置斜線(//),此運算元表示遞迴下降;也就是說,該查詢要求每一個型態的實例(instance),這個型態顯示在運算元的右邊,並且位於顯示在運算元左邊型態的下面。比方說,查詢CATALOG//LIGHT表示尋找所有在Catalog節點之下的Light節點,而查詢//LIGHT表示尋找文件中所有的Light節點。 為了測試這一點,請改變文字碼9-4中的查詢成為下述的樣子: var qry=xmlDoc.selectNodes("//LIGHT“)

[ ] 次查詢(Subqueries) 一個次查詢提供一個機制來限制查詢,我們可以透過插入型態到次查詢運算元中,來加入一個條件判斷到查詢型態中。而產生的結果就是符合次查詢標準的所有元素集合。比方說,查詢型態CATALOG/PLANT[ZONE]表示:尋找所有Catalog元素的子元素Plant,而Plant元素中至少包含一個Zone元素。 Note 次查詢的子句有點像是SQL語法的WHERE子句,所以使用這樣的說法,則將上面的查詢看成SQL語法,就是:尋找ANY Catalog元素的子元素Plant,WHERE Plant元素至少要存在一個Zone元素為TRUE。

XSLT 進階—表格套用 StudentOrg.xml Student.xml

XSLT 進階—排序 <?xml version="1.0" encoding="Big5"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <BODY> <CENTER><H1>學生成績排序</H1> <HR width="80%"/><TABLE width="80%"><TR bgcolor="orange"> <TD>姓名</TD><TD>住址</TD><TD>第一次段考成績</TD><TD>第二次段考成績</TD> </TR> <xsl:for-each select="grade/student" order-by="- number(grade1)"> <TR> <TD><xsl:value-of select="name"/></TD> <TD><xsl:value-of select="address"/></TD> <TD><xsl:value-of select="grade1"/></TD> <TD><xsl:value-of select="grade2"/></TD> </xsl:for-each> </TABLE> </CENTER></BODY> </HTML> </xsl:template> </xsl:stylesheet> 請將排序項目改為第二次段考成績

XSL 進階:邏輯運算 Number( ) <xsl:if test=“name[.=‘伍堯峰’]”> <xsl:if test="number(grade1)[.<60]">

XSL 進階:Java Script 運用Java Script 將XML 的資料,作簡單的運算:StudentAvg.xsl 運用Java Script 運用DOM 的API,處理XML內容:TestXML.htm 運用Java Script + CSS + Xsl 做到動態網頁的效果

StudentAvg.xsl <xsl:script language="Javascript"> function getAverage(item) { var gFirst = item.selectSingleNode("grade1").nodeTypedValue; var gSecond = item.selectSingleNode("grade2").nodeTypedValue; return (1*gFirst+1*gSecond)/2; } </xsl:script> <TD><xsl:eval language="Javascript">getAverage(this);</xsl:eval> </TD>

TestXML.htm <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML><HEAD> <SCRIPT LANGUAGE="JavaScript" FOR=window EVENT=onload> loadDoc() </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> var xmlDoc = new ActiveXObject("microsoft.xmldom"); xmlDoc.load("hello.xml"); function loadDoc() { if (xmlDoc.readyState == "4") start() else window.setTimeout("loadDoc()", 4000); }

TestXML.htm function start() { var rootElem = xmlDoc.documentElement; var toVar = rootElem.childNodes.item(0).text; alert (toVar); var toVar = rootElem.childNodes.item(1).text; var toVar = rootElem.childNodes.item(2).text; } </SCRIPT> <TITLE>Code Listing 5-6</TITLE> </HEAD> <BODY> </BODY> </HTML>

XML 應用 以e-mail Transfer 元件搭配XML應用 Dim oMail As New CDONTS.NewMail Dim oDOM As MSXML.DOMDocument Set oDOM = New MSXML.DOMDocument Dim strPath As String strPath = App.Path & "\" & "student.xml" If oDOM.Load(App.Path & "\" & "studentMail.xml") Then MsgBox "OK" Else MsgBox "Fail" End If Dim DomElement As MSXML.IXMLDOMElement Dim NodeList As MSXML.IXMLDOMNodeList

XML 應用 Set NodeList = oDOM.getElementsByTagName("student") Set DomElement = oDOM.documentElement Dim gradeAvg As Integer gradeAvg = (CInt(DomElement.getElementsByTagName("grade1").Item(0).Text) + CInt(DomElement.getElementsByTagName("grade2").Item(0).Text)) / 2 Dim studentName As String MsgBox DomElement.getElementsByTagName("name").Item(0).Text studentName = DomElement.getElementsByTagName("name").Item(0).Text MsgBox DomElement.childNodes.Item(2).Text MsgBox DomElement.getElementsByTagName("email").Item(0).Text

XML 應用 oMail.Subject = "成績通知單" oMail.From = "Silvia_Tsai@d11e.com" oMail.To = DomElement.getElementsByTagName("email").Item(0).Text If gradeAvg < 60 Then oMail.Body = "親愛的" & studentName & "同學" & "您自然科成績為:" & gradeAvg & "低於60" & _ "請於3月15日至教務處補考" ElseIf gradeAvg >= 60 And gradeAvg <= 80 Then oMail.Body = "親愛的" & studentName & "同學" & "您自然科成績:" & gradeAvg & _ "表現的不錯,下學期加油喔!" ElseIf gradeAvg > 80 Then "表現得非常好,下學期要繼續保持喔!" End If oMail.Send

未來展望 programmer可使用元件,減少開發時程,同時透過SOAP,預估未來是個網站元件化的時代,世界各地所有的軟體工程師,所code出的網站功能,都可供programmer引用,一個web services的時代,即將來臨。所以一個網站可能賣的不是產品,而是信用卡付款或網路競標的元件。