第 3 章 XML文件的轉換 –XSLT與XPath

Slides:



Advertisements
Similar presentations
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
Advertisements

猜谜语 有个小娃娃,真是没 礼貌。 见到小树摇一摇,吓 得树叶哇哇叫。 见到小花逗一逗,摘 去她的太阳帽。 没人和它交朋友,只 好自已到外处跑。
手动换页 域外风情系列 儿子去美国留学,毕业后定居美国。还给我找了 个洋媳妇苏珊。如今,小孙子托比已经 3 岁了。 今年夏天,儿子为我申请了探亲签证。在美国待 了三个月,洋媳妇苏珊教育孩子的方法,令我这 个中国婆婆大开眼界。
99學年度第1學期導師輔導工作座談會 全校性共同必修服務學習課程 報告單位:學務處領導知能與服務學習中心.
教育技术装备统计系统 使用培训 教育部基础教育司 教育部教育管理信息中心.
數位典藏聯合目錄計畫 執行經驗談 主講人:范紀文.
以XML可延伸式標注語言建立文章標誌系統研究- 以蘇軾詩為範圍
黄帝内经 内经教研室 王黎.
职官与科举 职官:在国家机构中担任一定职务的官吏,这里面有职官的名称、职权范围和品级地位等方面的内容。
职业教育.课程改革.项目课程 江苏省太仓中等专业学校校长 江苏省职业教育教学改革创新指导委员会委员 江苏省职业教育课程开发研究中心组组长
花开有日 芬芳天下 “国培计划(2012)” ——幼儿园骨干教师远程培训项目 山东幼儿园教师8班第4期简报 主办人:张瑞美     
《卖火柴的小女孩》 《海的女儿》 你 认 识 这 些 图 片 的 故 事 吗 《丑小鸭》 《拇指姑娘》 它们都来自于哪位作家笔下?
民主國家的政府體制 我國的中央政府體制 我國中央政府的功能 地方政府組織與功能
10-1 資料庫管理系統簡介 10-2 關聯式資料模式和查詢語言 10-3 Access 簡介 10-4 XML 簡介
銷售與顧客關係管理 巫立宇.邱志聖 著.
99年成語200題庫(21-40).
通訊科技教育改進計畫 「網路應用與服務組」 行動電子商務課程 XML之簡介.
XML应用体系结构 Application DOM SAX DOM4J XPath XSL XLink XML Namespace
20、豆花庄的小家伙们.
系統分析與設計 系級:資管三B 姓名:朱秋儒 學號:
CH11 心理疾病 李志鴻.
第 11 章 網際網路與資料庫系統.
XML 第05讲 使用CSS显示XML.
一言之辩强于九鼎之宝 三寸之舌胜于百万雄师
校園霸凌事件處理、申復流程暨狀況模擬 林華杉教官 此範本可作為群組設定中簡報訓練教材的起始檔案。 章節
让微笑伴您一生.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
《XML技术及其应用》 第1章 XML 基础知识 主讲教师:桂浩 武汉大学.
DAT301: XML数据和关系性数据的最终结合处 – SQL Server 2005
第12章 XSL-FO格式化輸出PDF 12-1 XSL-FO的基礎 12-2 XSL-FO的文件架構 12-3 XSL-FO的頁面範本
EEI-XML 教學.
XSL簡介 XSLT 樣版規則及樣式 範本元素 排序元素
PC2 安裝說明文件 2018/11/12.
XML資料傳輸 黃笠宸 4/3.
經濟部工業局電子化人才培訓課程 清華大學工業工程與工程管理學系 課程名稱:電子商務管理與技術
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
XSL: Extensible Stylesheet Language
扩展标记语言XML (Extensible Markup Language)
第16章 信息系统综合应用开发实例.
第12章 VBA编程 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能的扩展。Office中包含Visual Basic for Application(VBA),VBA具有与Visual.
XPath读书报告 杨睿.
Endnote與Word的應用(進階).
OFC351 利用Office System开发复杂的商务解决方案 架构、模式、场景
單元5-1:XSL XML的轉換語言 王豐緒 銘傳大學資工系.
第7章 Web伺服器檔案與XML文件的處理 7-1 System.IO名稱空間的基礎 7-2 伺服器的資料夾與檔案操作
何謂名稱空間 何謂URI 名稱空間的作用方式 使用名稱空間的注意事項
XML Scheam 也是用來驗證XML文件的驗證語法.
XML基礎課程 5 數位芝麻網路公司 XML講師:蔡斐婷.
範例 (登入) 輸入使用者帳號密碼後,點擊「登入」執行帳密檢驗和其他功能 資料庫中的會員資料表
EndNote Advanced Advance your Research
此簡報可能會牽涉到聽眾的討論活動,也就是所謂的執行項目。因此在進行簡報時﹐可充份利用 PowerPoint 來記錄這些執行項目:
<title> XML與XQuery ,新一代資料儲存標準 </title>
第16章 信息系统综合应用开发实例.
张孝祥IT课堂 -深入体验Java Web开发内幕
第 1 章 簡介XML.
车东 Google XML接口的XSLT设计 车东
選擇勞退新制,終身免煩惱 勞工退休金新制 說明會.
經濟部工業局電子化人才培訓課程 清華大學工業工程與工程管理學系 課程名稱:電子商務管理與技術
OrientX3.0及其改进之处 XML小组.
第 6 章 XLink、XBase與XPointer
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
單元4-2: XPATH 範例 王豐緒 銘傳大學資工系.
設計者:台中市重慶國小 張祐榕.楊晟汶.張儷齡
僅首頁出現本title即可 責任的故事(二年級) 生命最美麗動人的本能 簡報製作:瑞柑國民小學 鄭雙慧 文/ 何秀芳.
國科會 線上申辦業務推廣服務 綜合說明 報告人:國科會資訊小組 九十四年九月.
我會看年曆.
项目一 了解网站的概念 项目二 创建个人网站“鸿渐工作室” 项目三 制作“鸿渐工作室”的主页 项目四 HTML语言 项目五 制作“家乡特产”网页 项目六 制作“给我留言”网页 项目七 制作“应用技巧”网页 项目八 模板制作及应用.
績優教師分享 美容保健科 林品瑄 教師.
西南科技大学网络教育系列课程 动态网页设计(JSP) 补充 JSP操作XML文件.
第17章 PHP應用實例探討 17-1 PHP應用實例探討 17-2 圖片版的訪客計數 17-3 訪客留言簿 17-4 聊天室
Presentation transcript:

第 3 章 XML文件的轉換 –XSLT與XPath

XSLT與XPath的簡介 - 什麼是XSLT XSLT(XSL Tranform)本身就是一種XML文件,用於轉換XML文件。 XSLT原先是XSL(eXtensible Stylesheet Language ,譯為可延伸樣式語言)的一部份。 XSL可分為轉換(XSLT)與格式化(FO)兩個部份,整個處理XML文件的過程,如下圖所示。

XSLT與XPath的簡介 - XPath語法 為方便讀者檢視本節XPath語法範例的執行結果,本書隨書光碟的ch3範例資料夾XPath子資料夾下,將提供show.htm檔。

XSLT與XPath的簡介 - XPath語法 中樞::節點測試[條件式] 中樞 用於定義XML文件中,欲擷取節點的路徑敘述。下表為各中樞(Aixs)關鍵字意義的說明,更進一步的說明請參考3-2-3節。

XSLT與XPath的簡介 - XPath語法

XSLT與XPath的簡介 - XPath語法 節點測試 用於測試欲套用節點的敘述,通過測試之節點將被擷取。下表將介紹各節點測試(Node-Test),詳細說明請參考3-2-4節。 條件式 用於篩選擷取節點的條件式。

XSLT與XPath的簡介 - XPath語法 取得文件元素的根節點–『/』:若將『/』符號運用於第一個字元時,代表XML文件的文件元素(根元素)的上一層節點,這個節點除包含文件元素外,還將包含文件宣告以及DTD宣告。

XSLT與XPath的簡介 - XPath語法 串連符號–『/』:若欲串連數個XPath語法,漸漸縮小篩選XML文件中資料的範圍,則需運用『/』符號。常見的XPath語法將如下所示。 中樞::節點測試[條件式]/中樞::節點測試[條件式]/…

XSLT與XPath的簡介 - XPath語法

XSLT與XPath的簡介 - XPath語法

XSLT與XPath的簡介 - XPath語法 以下是一個用於篩選book2.xml文件中節點的XPath敘述,意義為『取得目前節點下子節點(child)中booklist(節點測試)節點』。由於XPath預設目前節點為最上層的節點,其含意就成了『取得文件節點下子節點(child)中的booklist(節點測試)節點』。 child::booklist

XSLT與XPath的簡介 - XPath語法 篩選範圍如下:

XSLT與XPath的簡介 - XPath語法 以下敘述將利用『/』符號在前述XPath後,增加另一段XPath敘述,將可指定從篩選結果一,再篩選出第2個book元素。 child::booklist/child::book[2] 從book2.xml篩選出來的結果如下所示。

XSLT與XPath的簡介 - XPath語法 篩選範圍如下:

XSLT與XPath的簡介 - XPath語法 XPath所謂的Axes(中樞)觀念,就是利用已經完成預設參照路徑的關鍵字建立XPath的參照路徑。

XSLT與XPath的簡介 - XPath語法 下表為各Axis(Axes為複數型態)關鍵字的意義。

XSLT與XPath的簡介 - XPath語法

XSLT與XPath的簡介 - XPath語法 節點測試:

XSLT與XPath的簡介 - XPath語法 條件式篩選:

XSLT與XPath的簡介 - XPath語法 指定順序取得元素: 若欲取得XML文件內的一個元素時,可利用指定某元素在樹狀結構之階層位置的方式達成。欲指定元素的順序時,可使用『[]』運算子,並以『[順序]』之語法完成指定。以下敘述將從book.xml取得booklist元素中,第2個book元素。 /booklist/book[2]

XSLT與XPath的簡介 - XPath語法 範例如下:

XSLT與XPath的簡介 - XPath語法 語法範例:

XSLT與XPath的簡介 - XPath語法 『|』運算子稱之為聯集運算子,用於聯集兩條件式所篩選出的節點。 以下範例由兩條件式組成,分別篩選出sale屬性值為Y的book元素,與price子元素值小於600的book元素,然後以『|』運算子聯集兩條件式篩選出的元素。 //book[@sale = "Y"] | //book[price < 600]

XSLT與XPath的簡介 - XPath函數 節點集函數(Node-set Function) 字串函數(String Function) 布林函數(Boolean Function) 數值函數(Number Function)

XSLT與XPath的簡介 - XPath函數 節點集函數(Node-set Function)

XSLT與XPath的簡介 - XPath函數 字串函數(String Function)

XSLT與XPath的簡介 - XPath函數 布林函數(Boolean Function)

XSLT與XPath的簡介 - XSLT樣版運作觀念

XSLT與XPath的簡介 - XSLT的運作方式 Server端執行

XSLT與XPath的簡介 - XSLT的運作方式 Client端執行

XSLT與XPath的簡介 - XSLT的運作方式

XSLT與XPath的簡介 - XSLT的運作方式

XSLT與XPath的簡介 - XSLT文件的建立與使用

XSLT與XPath的簡介 - XSLT文件的建立與使用 XSLT文件的文件元素為xsl:stylesheet元素,在該元素中,必須利用xmlns定義使用的名稱空間為『http://www.w3.org/1999/XSL/Transform』,版本為1.0。

XSLT與XPath的簡介 - XSLT文件的建立與使用 <xsl:template>元素用於定義XSLT文件內的樣版,這些樣版套用於特定節點執行轉換動作: <xsl:template match="模式" name="樣版名稱" mode="樣式" priority ="等級" > …… </xsl:template>

XSLT與XPath的簡介 - XSLT文件的建立與使用 <xsl:template>元素用於定義XSLT文件內的樣版,這些樣版套用於特定節點執行轉換動作: <xsl:template match="模式" name="樣版名稱" mode="樣式" priority ="等級" > …… </xsl:template> 以下敘述所定義的樣版,將套用於根元素。

XSLT與XPath的簡介 - XSLT文件的建立與使用 若定義一個不執行任何動作的樣版時,語法如下: <xsl:template match=模式name=樣版名稱 mode=樣式priority =等級 /> 下表為此元素與其他元素相關關係的說明。

XSLT與XPath的簡介 - XSLT文件的建立與使用 <xsl:value-of>元素用於從XML文件中,取得元素的值,語法如下: <xsl:value-of select = "選取敘述"/> 或 <xsl:value-of select = "選取敘述"></xsl:value-of> 以下敘述將取得XML文件中,messages元素的message子元素之值。

XSLT與XPath的簡介 - XSLT文件的建立與使用 下表為此元素與其他元素相關關係的說明。

XSLT與XPath的簡介 - XSLT文件的建立與使用 XML文件若指定欲套用的XSLT文件時,需在前言(prolog)中定義,語法如下: <?xml-stylesheet type="text/xsl“ href="XSLT文件名稱與路徑"?>

XSLT與XPath的簡介 - XSLT文件的建立與使用 將template.xml開啟於瀏覽器內時,畫面如下:

XSLT與XPath的簡介 - 多樣版XSLT文件的建立 以下XSLT文件內,將定義三個樣版,以進行XML文件的轉換。

XSLT與XPath的簡介 - 多樣版XSLT文件的建立 套用此XSLT文件的XML文件內容如下:

XSLT與XPath的簡介 - 多樣版XSLT文件的建立 利用瀏覽器開啟mtemplate.xml文件後,結果如下圖所示。

XSLT與XPath的簡介 - 多樣版文件的運作 在mtemplate.xsl檔,則定義了三個樣版,分別套用於根節點、author元素與文字節點元素。 XML文件套用XSLT樣版的過程將先從套用於根元素的樣版開始處理,這類樣版本書將稱為主樣版。 主樣版內可以利用XPath語法,配合各種XSLT元素,操作根元素下的所有元素,例如:可以利用3-5-4節的xsl:value-of元素,取得XML文件中節點的值。

XSLT與XPath的簡介 - 多樣版文件的運作 mtemplate.xsl檔的主樣版內,將利用<xsl:apply-templates>元素,以遞迴(recursive)方式處理根元素下,booklist元素book子元素的所有元素,並尋找XSLT文件中是否定義套用於節點之樣版,『是』則套用。 有關<xsl:apply-templates>元素的更進一步說明,請參考3-6-3節的內容。

XSLT與XPath的簡介 - 多樣版文件的運作 mtemplate.xsl檔除了套用於根元素的主樣版外,還有套用於price元素與title元素的樣版。這兩個樣版將僅取得元素的值,並分別利用『[]』與『{}』標示。

XSLT與XPath的簡介 - 多樣版文件的運作 另一個空樣版,用於處理所有文字節點(沒有子元素只包含資料的節點),有關此樣版的目的請參考下一節最後的說明。

XSLT與XPath的簡介 - xsl:apply-templates元素 <xsl:apply-template>元素可控制XSL處理器,在目前XSLT文件內,尋找適當樣版套用於節點上。語法如下: <xsl:apply-templates select="模式" mode="樣式"/> 或 …… </xsl:apply-template>

XSLT與XPath的簡介 - xsl:apply-templates元素 若有兩樣版同時可套用時,將採用優先等級較高者,樣版的優先等級設定於<xsl:template>元素的priority屬性。 若等級亦相同時,則以XSLT文件中,較後被定義的樣版優先。 若搜尋至文字節點,仍沒有適合節點套用的樣版時,則XSLT將會直接輸出該元素的值。 當XSLT文件中,已提供套用某節點的樣版時,<xsl:apply-templates>將不再處理該節點下的子節點,這些子節點將交由套用的樣版處理。 若<xsl:apply-template>元素的select屬性,未被設定時,則樣版所套用之節點下的所有節點,均會被處理。

XSLT與XPath的簡介 - xsl:apply-templates元素 <xsl:template match="text()" /> mtemplate.xsl檔內為了避免XSLT處理器在找不到節點可套用的樣版時,直接輸出節點值,因此,第20列將運用上述語法,建立一個空樣版,處理文字節點。

XSLT的流程控制元素 - xsl:for-each元素 <xsl:for-each>元素可處理由XPath語法篩選出的所有元素,語法如下: <xsl:for-each select="模式"> …… </xsl:for-each> <xsl:for-each>元素的運作方式,與程式的迴圈觀念相似。

XSLT的流程控制元素 - xsl:for-each元素 以下敘述為一處理book元素的樣版,每個book元素下擁有數個元素,將利用<xsl:for-each>元素,配合<xsl:value-of>元素,列出book元素內所有元素(./*)的名稱(name(.))與內容(.)。

XSLT的流程控制元素 - xsl:if元素 <xsl:if>元素用於利用條件式控制XSLT執行資料轉換動作,語法如下: <xsl:if test=條件式> …… </xsl:if> 以下敘述將判斷元素名稱是否為『author』,『是』則取得該元素值。

XSLT的流程控制元素 - xsl:choose元素、xsl:when元素與xsl:otherwise元素 <xsl:if>元素一次僅能運用一個條件式,進行判斷動作。 若欲進行多條件式的判斷時,則須使用<xsl:choose>、<xsl:when>與<xsl:otherwise>元素,語法如下: <xsl:choose> <xsl:when test=條件式一> …… </xsl:when> <xsl:when test=條件式二> <xsl:otherwise> </xsl:otherwise> </xsl:choose>

排序與文字元素 - xsl:sort元素XSLT的流程控制元素 將<xsl:sort>元素運用於<xsl:for-each>元素與<xsl:apply-templates>元素中,以指定資料的排序方式。語法如下: <xsl:sort select = 排序元素 data-type = 資料型別 order = 排序方式 lang = 使用語言 case-order = 大小寫優先順序/> 以下敘述將指定套用樣版時,以price元素之值,進行遞減排序。

排序與文字元素 - xsl:sort元素XSLT的流程控制元素 <xsl:text>元素用於指定資料,以純文字的方式輸出。使用語法如下: <xsl:text disable-output-escaping=取消跳脫功能> …… </xsl:text> 以下敘述將利用<xsl:text>元素讓『<』符號以字元方式輸出,而不轉換為『<』。

排序與文字元素 - 樣版函數的使用 建立樣版函數需運用<xsl:template>元素,並將函數名稱設定給name屬性。 以下敘述將宣告一個名為book的樣版函數。 <xsl:template name="book"> …… </xsl:template> 呼叫樣版函數時,必須使用<xsl:call-template>元素,語法如下: <xsl:call-template name=樣版函數名稱> </xsl:call-template>

排序與文字元素 - 樣版函數的使用 定義與呼叫樣版函數時,欲定義參數必須使用<xsl:param>元素,使用語法如下: <xsl:param name=參數名稱 select=模式> </xsl:param> 或 <xsl:param name=參數名稱 select=模式/> 以下敘述將在呼叫book樣版函數時,篩選出book元素與serialbook/book元素,做為booknode參數。

排序與文字元素 - 樣版函數的使用 而在book樣版函數中,將利用<xsl:param>元素,宣告該樣版函數所接受的參數,而欲使用傳入的參數時,必須在參數名稱前加上『$』符號。

用於建立元素的XSLT元素 - XML文件間的轉換(output元素的使用) 運用XSLT將XML文件轉換成另一份XML文件時,Microsoft Parser將預設輸出如下的XML文件宣告。 <?xml version="1.0" encoding="UTF-16"?> 若欲自訂時,則可利用<xsl:output>元素,將omit-xml-declaration屬性設定為yes,取消預設之XML文件宣告的輸出,如下所示。 <xsl:output omit-xml-declaration="yes"/> 然後利用<xsl:text>元素,建立XML文件宣告。 <xsl:text disable-output-escaping="yes"> <?xml version="1.0" encoding="Big5"?> </xsl:text> 上述敘述將輸出的XML文件宣告如下:

用於建立元素的XSLT元素 - xsl:processing-instruction元素 <xsl:processing-instruction>元素用於在轉換後的XML文件中,建立處理命令元素。語法如下: <xsl:processing-instruction name = 處理命令名稱> …… </xsl:processing-instruction> 以下敘述將建立一個定義轉換後XML文件之XSLT文件的處理區塊元素。

用於建立元素的XSLT元素 - xsl:element與xsl:attribute元素 <xsl:element>元素用於在輸出的XML檔中,建立元素。語法如下: <xsl:element name=元素名稱> …… </xsl:element> 通常在<xsl:element>元素中,可運用直接鍵入值,或透過<xsl:value-of>元素從XML文件取得值的方式,定義欲建立元素的值。 運用<xsl:attribute>元素定義元素的屬性之語法如下: <xsl:attribute name=元素名稱> </xsl:attribute>

用於建立元素的XSLT元素 - xsl:element與xsl:attribute元素 以下敘述將建立一個名為book的元素,且該元素擁有price與author兩個屬性。Book元素之元素值與屬性值,將分別利用<xsl:value-of>元素,選取自price、author、title。

用於建立元素的XSLT元素 - xsl:comment元素 <xsl:comment>元素用於在輸出的XML檔中,建立註解。語法如下: <xsl:comment> …… </xsl:comment> 以下敘述將在轉換後的XML文件中,以『書籍清單』字串,建立註解文字。 <xsl:comment>書籍清單</xsl:comment>

用於建立元素的XSLT元素 - <xsl:copy>元素 <xsl:copy>元素從XML文件,複製目前元素至輸出的XML檔中。語法如下: <xsl:copy>……</xsl:copy> 但是<xsl:copy>元素僅會複製元素的名稱、內容與名稱空間,不會複製元素的屬性與子元素。

用於建立元素的XSLT元素 - xsl:copy-of元素 <xsl:copy-of>元素將從XML文件,運用設定給select屬性的XPath敘述,篩選出目前元素下的元素,然後複製。 與<xsl:copy>元素不同的,<xsl:copy-of>元素將完整複製元素,包含元素的名稱、屬性、資料、名稱空間…等。 語法如下: <xsl:copy-of select="模式"/> <xsl:copy-of>元素僅會複製元素的名稱、內容與名稱空間,不會複製元素的屬性與子元素。