xsl(extensible style sheet language),即可擴充套件樣式表語言,是xml的親密
夥伴。要學習好xml,不能不掌握xsl。本文就向你全面講述xsl的一切一切:
xsl介紹:介紹xsl是xml的樣式表語言,xsl是什麼以及它能做什麼。
xsl介紹:
xml的樣式表語言xsl比ccs要複雜得多。
css:html的樣式表語言:
由於html使用預先確定的標記,因此這些標記的含義都很好理解:元素定
義一段,元素定義乙個標題。瀏覽器知道如何顯示這些元素。
使用css向html元素增加顯示格式是乙個簡單的過程:很容易告訴瀏覽器用某
種特殊字型或顏色來顯示各個元素,瀏覽器也很容易理解。
xsl:xml的樣式表:
由於xml不使用預先確定的標記(我們可以根據需要使用任意標記),因此標
記的含義並不能被直接理解:可以表示乙個html**,也可以表示一件家
具。由於xml的特性,瀏覽器不知道如何顯示乙個xml文件。
為了顯示xml文件,必須要有乙個機制來描述如何顯示文件。這些機制之一是
css,但是xsl(可擴充套件的樣式表語言)是xml的首選樣式表語言,它要比html使用
的css複雜得多。
xsl:不僅僅是乙個樣式表
xsl包含3部分:
乙個轉換xml文件的方法;
乙個定義xml部分和模式的方法;
乙個格式化xml文件的方法。
如果對此還不能理解,那麼可以先將xsl理解成:一種將xml轉換成html的語
言,一種可以過濾和分類xml資料的語言,一種可以對乙個xml文件的部分進行尋
址的語言,一種可以基於資料值格式化xml資料的語言(如用紅色顯示負數),一
種嚮不同裝置輸出xml資料的語言(如螢幕、紙或聲音)。
xsl是一種www標準
xsl是www協會推薦的一種標準。這種語言的前兩部分在2023年11月已經成為
w3c推薦標準。2023年,包括xsl格式化部分的完整xsl推薦標準成為w3c的候選標
準。xsl語言:定義xsl語言的子語言:xslt、xpath和xsl格式物件。
xsl語言
xsl實際上包含三種語言,其中最重要的是xslt。
xsl是三種語言的結合體
上面提到,xsl實際上包含三種語言,具體是:
xslt是一種轉換xml的語言;
xpath是一種定義xml部分或模式的語言;
xsl格式化物件是一種定義xml顯示方式的語言。
xslt是一種用來將xml文件轉換成其他型別文件或其它xml文件的語言。xpat
h是一種對xml文件的部分進行定址的語言。設計xpath是要讓xslt使用的。格式化
是將乙個xsl轉換的結果變成適於讀者或聽眾使用的輸出格式的過程。
2023年11月16日,xslt和xpath被作為兩個單獨的w3c推薦標準發布。目前對
於xsl格式化物件還沒有單獨的w3c文件,但是在xsl1.0推薦標準內有乙個描述。
xslt:xsl轉換
xslt是xsl標準中最重要的部分,它用於將乙個xml文件轉換成另乙個xml文件
或另一種型別的文件,也就是將乙個xml文件轉換成瀏覽器所能識別的一種格式。
這其中之一就是html。通常,xslt將每個xml元素都轉換成乙個html元素。
xslt還可以向輸出檔案中增加全新的元素,或去掉一些元素。它可以重新安
排這些元素並對元素進行分類,測試並確定顯示哪些元素等等。
描述這種轉換過程的乙個常用說法是:xsl用xslt將乙個xml**樹轉換成另
乙個xml結果樹(或將乙個xml源文件轉換成另乙個xml結果文件)。
xsl如何工作
在轉換的過程中,xslt用xpath來定義源文件中與乙個或多個預先確定的模板
相匹配的部分。當找到了乙個匹配時,xslt就將源文件中的匹配部分轉換成結果
文件;而源文件中不與任何乙個模板匹配的部分最終在結果中保持不變。
本文集中介紹xslt和xpath
本文的大部分章節都集中在xslt和xpath上。我們將用xslt來定義xml轉換,
用xpath來為轉換定義匹配模式。即使xsl包含了3個不同名稱的不同部分,我們仍
將使用xsl的通用術語。
xsl瀏覽器:介紹xsl的瀏覽器支援以及為什麼用internet explorer 5.0來示範xsl。
xsl 瀏覽器
目前支援xsl的瀏覽器很少,我們將用internet explorer 5.0來演示xsl。
internet explorer的xml解析器
為了用xsl來處理乙個xml文件,你需要乙個帶有xsl引擎的xml解析器。目前
,internet explorer 5.0是符合這一條件的唯一瀏覽器。所以,本文舉例中的代
碼只在internet explorer 5.0或更高版本中工作。
internet explorer的xsl引擎
internet explorer 5.0中的xsl並不是100%的與最新發布的w3c xsl標準相吻
合。在xsl標準完全固定下來之前,internet explorer 5就已經發布了,並且當
時的xsl標準還是乙個工作草稿。但是microsoft已經承諾在下乙個版本中解決這
個問題。
本文中的例子與正式的w3c xsl推薦中的例子只有很小的不同,這些例子很適
用於xsl的學習。
例子中唯一可見的區別就是xsl樣式表宣告:
這是w3c xsl推薦中的標準方式:http://www
.w3.org/1999/xsl/transform">
這是internet explorer的方式(來自xsl工作草稿):
bob dylan
usacolumbia
10.90
1985
如果使用的是internet explorer 5.0或更高版本,就可以檢視這個xml檔案的顯示結果。
建立乙個xsl樣式表文件
現在用轉換模板來建立乙個xsl樣式表:
<?xml version='1.0'?>
>
title
artist
如果使用的是internet explorer 5.0或更高版本,就可以檢視這個xsl檔案的顯示結果。
將樣式表連線到xml文件
現在向xml文件中增加乙個xsl樣式表引用:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="cd_catalog.xsl"?>
empire burlesque
bob dylan
usacolumbia
10.90
1985
如果有乙個與xsl相容的瀏覽器,例如internet explorer 5.0或更高版本,那麼
就能很好地將xml轉換成html。點選這裡檢視結果。
xsl模板:xsl如何使用模板來定義從xml到另一種輸出格式的轉換。
xsl模板
xsl用模板來描述如何輸出 xml。
css的使用規則
如果已經學習過css的知識,我們就會知道css是用乙個或多個規則來定義ht
ml元素的輸出,用乙個選擇器將規則與乙個html元素聯絡起來。比如以下這個cs
s規則中的p選擇器說明應該用一種叫做arial的字型來顯示乙個元素:
p xsl使用模板
xsl使用乙個或多個模板來定義如何輸出xml元素,用乙個匹配屬性來將模板
與乙個xml元素聯絡起來,還可以用匹配屬性來為xml文件的乙個完整分支來定義
模板。
請看以下的xsl樣式表,它包含乙個模板以輸出前一節中的xml cd目錄:
<?xml version='1.0'?>
>
title
artist..
由於樣式表本身就是乙個xml文件,因此文件以乙個xml宣告開始:<?xml versio
n='1.0'?>。第二行中的xsl:stylesheet標記定義了樣式表的開始。第三行中的x
sl:template標記定義了乙個模板的開始。模板屬性match="/"將模板與xml源文件
的根 (/)聯絡(匹配)起來。文件的其它部分包含了模板本身,最後兩行定義了
模板的結束和樣式表的結束。
用internet explorer 5來看看xml檔案、xsl檔案以及結果。 元
素 前面例子的結果有點令人失望,因為沒有將資料從xml文件複製到輸出中。xs
l的元素可以用來選擇進入xsl轉換輸出流中的xml元素:
<?xml version='1.0'?>
>
title
artist
注意:選擇屬性值用到的語法被稱為xsl模式。它工作起來就象是在乙個檔案系統
中航行,其中用乙個前斜線 (/) 來選擇子目錄。
用internet explorer 5來看看xml檔案、xsl檔案以及結果。
元素 前面例子中的結果還是有點不太令人滿意,因為從xml文件中只複製了一行資料到
輸出。xsl的元素可以用來將每個xml元素選擇到xsl轉換的輸出流
中: <?xml version='1.0'?>
>
title
artist
xsl:for-each元素在xml文件中查詢元素,然後為每個元素重複模板的一部分。
用internet explorer 5來看看xml檔案、xsl檔案以及結果。
XSL基礎教程
xsl基礎教程 一 http www 128.ibm.com developerworks cn xml ccidnet xslfund index1.html xsl基礎教程 二 http www.ibm.com developerworks cn xml ccidnet xslfund inde...
XSL基礎教程第四章
xsl索引 xsl可以用來對乙個xml文件進行索引。將索引資訊放在 現在重新看看在以前許多章節中都曾看到過的 xml文件 以下為引用的內容 empire burlesque bob dylan usa columbia 10.90 1985 要想將這個xml檔案作為乙個普通的html檔案輸出,並且同...
IOS OpenGLES 基礎教程 一
今天起本站將推出ios opengles基礎教程,當然本人也是一面自學一面將學習中所用到的和學到的東西一併分享給大家,在本教程中,本人會對 進行逐行的注釋講解,資源來自於網路和書籍的整合,如在教程中有錯誤的地方,希望大家及時指正,可隨時傳送郵件到helmsmansoft 163.com 與本人取得聯...