XML学习笔记——XSL
XSL
.XSL文件
說明
經常看到.xsl文件,那么什么是xsl呢?即可擴展樣式單語言(extensible stylesheet language)。它是由W3C制定的。說到樣式語言,我們想起CSS,類似與CSS,XSL是XML的專屬樣式語言。
xsl與css的不同
css是一種靜態的樣式描述格式,其本身不遵從XML的語法規范。另外,css還有很多局限。而xsl不同,他是通過XML進行定義的,遵從XML的語法規則,是XML的一種具體應用。
簡而言之,XSL本身也是一個XML文檔,系統可以使用同一個XML解釋器對XML文檔極其相關的XSL文檔進行解釋處理。
組成
XSL實際上包含三種語言。
- XSLT是一種轉換XML的語言,即將XML文檔轉換城其他類型文檔或其他XML文檔的語言
- XPATH是一種定義XML部分或模式的語言,即對XML文檔的部分進行尋址的語言
- XSL格式化對象是一種定義XML顯示方式的語言,即將一個XSL轉換結果變成適合讀者或聽眾使用的輸出格式的過程
這三種語言構成XSL的兩大部分。
- 第一部分描述了如何將一個XML文檔進行轉換,轉換為可瀏覽或可輸出的格式
- 第二部分則定義了格式化對象。
原理:在輸出的時候,首先將XML文檔根據給定的XSL轉換為可以顯示的結構,這個過程成為轉換。最后再按照FO解釋,產生一個可以在屏幕上、紙質介質上、語音設備或者其他媒體中可以輸出的結果,這個過程稱為格式化。
使用XSL顯示XML
XML的樹狀結構
XML文檔是以根元素為根節點的一個樹狀結構。所謂樹狀結構,就是由相互連接的節點組成,這些節點實際上是XML文檔中元素及其內容。在樹狀結構中,根節點與子節點相連接,而子節點又有他們自己的子節點,樹狀結構最重要的性質是每個節點與其子節點也構成一個樹狀結構名如此一來,每個樹狀結構都可以看作是由一些曉得樹狀結構按照層次結構組成。
XSLT
XSLT是XSL中最重要的部分,其主要功能是轉換。它將一個沒有形式表現的XML內容文檔作為一個源樹,將其轉換為一個有樣式信息的結果樹。在XSLT中定義了與XML文檔中各個邏輯成分相匹配的模版,以及匹配轉換方式。
XSLT基本思想
通過定義轉換模版,將XML源文檔轉換為帶樣式信息的可瀏覽文檔。最終的可瀏覽文檔可以是HTML格式、FO格式或者其他面向顯示方式藐視的XML格式。
XSLT名稱空間
在很多XSL的開頭我們常常看到這樣的語句
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">為了解釋這個東西,我們尋根到這個網站http://www.w3.org/1999/XSL/Transform
里面有一句話:
The namespace http://www.w3.org/1999/XSL/Transform is referred to as “the XSLT namespace”. The prefix xsl is conventionally used to refer to this namespace (and is so used both within this document and within the XSLT specification), but it has no special status: any prefix may be used.
大概的意思是http://www.w3.org/1999/XSL/Transform這個名稱空間代表XSLT的名稱空間(namespace),所用的前綴(prefix)是xsl,通常使用xsl這個前綴來引用xslt的名稱空間,比如:
- xsl:stylesheet 就代表引用了xslt的名稱空間,并且使用了當中的stylesheet根元素。
后半句的意思是xsl這個前綴不是特定的,可以使用其他任何前綴。
XSLT元素
這里引用http://www.w3.org/1999/XSL/Transform名稱空間里面的定義
The namespace name http://www.w3.org/1999/XSL/Transform is used primarily to identify elements which serve as declarations or instructions in the XSLT language. The full list of element names used in XSLT 3.0 is:
xsl:accept xsl:accumulator xsl:accumulator-rule xsl:analyze-string xsl:apply-imports xsl:apply-templates xsl:assert xsl:attribute xsl:attribute-set xsl:break xsl:call-template xsl:catch xsl:character-map xsl:choose xsl:comment xsl:context-item xsl:copy xsl:copy-of xsl:decimal-format xsl:document xsl:element xsl:evaluate xsl:expose xsl:fallback xsl:for-each xsl:for-each-group xsl:fork xsl:function xsl:global-context-item xsl:if xsl:import xsl:import-schema xsl:include xsl:iterate xsl:key xsl:map xsl:map-entry xsl:matching-substring xsl:merge xsl:merge-action xsl:merge-key xsl:merge-source xsl:message xsl:mode xsl:namespace xsl:namespace-alias xsl:next-iteration xsl:next-match xsl:non-matching-substring xsl:number xsl:on-completion xsl:on-empty xsl:on-non-empty xsl:otherwise xsl:output xsl:output-character xsl:override xsl:package xsl:param xsl:perform-sort xsl:preserve-space xsl:processing-instruction xsl:result-document xsl:sequence xsl:sort xsl:source-document xsl:strip-space xsl:stylesheet xsl:template xsl:text xsl:transform xsl:try xsl:use-package xsl:value-of xsl:variable xsl:when xsl:where-populated xsl:with-param
XSL語法
根元素
<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/WSL/Transform"></xsl:stylesheet>該元素的作用是聲明XSLT的開始。兩個常用屬性
- version 表示XSLT的版本序號
- xmlns表明XSLT所使用的命名空間
模版元素
一個XSL文檔主要是由一系列模版規則構成,一條模版規則有一個模式,該模式指定了它能夠作用的樹狀結構。當模式匹配時就會按照模版樣式輸出。模式匹配是指XSL處理器在掃描XML文檔的時候,回一次遍歷該文檔樹狀結構中國的每一棵子樹,在這個過程中,處理器試圖找到與模版規則中的模式相符合的子樹,如果找到,則將模版規則應用到這棵子樹。
模版規則,即一個xsl:template元素,該元素定義了將原文檔轉換到結果樹所需要的一系列規則。其中有一個match屬性,用于指示一種模式,可以找到應用該規則的節點。
實例:
<xsl:template match="employee"><xsl:apply-templates select="name"/> </xsl:template>< xsl:template match=”employee”>這個模板匹配employee節點,告訴處理器處理employee節點的所有子節點。
select=”name”,select屬性告訴處理器只處理employee節點下的name子節點。
在XSL中套用模版
使用以下語句
<xsl:apply-templates select="xml_element_name"/>當要選擇的是屬性里的數據時,使用
<xsl:apply-templates select="@xml_atrribute_bane"/>xsl:apply-templates元素的作用是告訴XSL處理器,如果有子元素,則要對子元素進行解析,即對指定的XML文檔子元素應用相應的模版規則,而指定子元素則由該元素的select屬性值表示。
選取XML文檔中的數據
在使用XSL對XML文檔進行轉換時,首先需要獲取XML元素或屬性的內容,這通過內容元素的xsl:value-of來實現,同時用該元素所帶有的select屬性來指定XML元素名稱,由此構成的XSL語句即可完成對XML文檔轉換時要選取數據的任務。
使用XSL顯示XML
在XML文檔中應該添加如下聲明才能顯示XSL的模版效果
<?xml-stylesheet type="text/xsl" href="xsl-uri"?>xsl-uri代表該樣式表的名稱與路徑,如”char05.xsl”
其他
關于XSLT的細節內容,可以訪問官方網站XSLT 2.0版本的教程介紹
https://www.w3.org/TR/xslt20/
附錄
XML編輯器推薦:XMLSpy
總結
以上是生活随笔為你收集整理的XML学习笔记——XSL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决element-ui 的 Notif
- 下一篇: Activity + Fragment