目錄
起始於XSL
CSS = HTML 樣式表
XSL = XML 樣式表
XSL - 不只是樣式表語言
XSL 包含三個部分:
从一个原始的 XML 文档开始
在 Internet Explorer 和 Firefox 中查看 XML 文件:
在 Netscape 6 中查看 XML 文件:
在 Opera 7 中查看 XML 文件:
创建 XSL 样式表
把 XSL 样式表链接到 XML 文档
<xsl:template> 元素
好了,让我们看一下上一节中的 XSL 文件的简化版本:
代码解释:
以上转换的结果类似这样:
<xsl:value-of> 元素
上面的转换结果类似这样:
<xsl:for-each> 元素
结果过滤
合法的过滤运算符:
在何处放置排序信息
<xsl:if> 元素
语法
在何处放置 <xsl:if> 元素
<xsl:choose> 元素
在何处放置选择条件
另一个例子
<xsl:apply-templates> 元素
XSLT 元素
首頁 後端開發 XML/RSS教程 瘋狂XML學習筆記(11)-----------XSLT講解

瘋狂XML學習筆記(11)-----------XSLT講解

Feb 21, 2017 pm 02:44 PM


前面對XML的基本的知識已經整理過了,如果有興趣可以存取下面的網址

http://www.php.cn/

 

對於文章中的圖文顯示部分出現錯誤,無法顯示,敬請諒解!

想查看的話可以下載w3cshool API 文件

#連接http://www.php.cn/下載

 

XSLT它起始於XSL,結束於XSLT、XPath 以及XSL-FO。

後面會對XPath進行詳細解說

起始於XSL

XSL 指擴充樣式表語言(EXtensible Stylesheet Language)。

萬維網聯盟 (W3C) 開始發展 XSL 的原因是:存在著基於 XML 的樣式表語言的需求。

CSS = HTML 樣式表

#HTML 使用預先定義的標籤,標籤的意義很容易被理解

HTML 元素中的

元素定義表格 - 並且瀏覽器清楚如何顯示它

為 HTML 元素新增樣式是很容易的。透過 CSS,很容易告知瀏覽器用特定的字體或顏色顯示一個元素。

XSL = XML 樣式表

XML 不使用預先定義的標籤(我們可以使用任何喜歡的標籤名稱),而這些標籤的意義並不都那麼容易被理解

元素意味著一個 HTML 表格,一件家具,或別的東西 - 瀏覽器不清楚如何顯示它

XSL 可描述如何顯示 XML 文件!

XSL - 不只是樣式表語言

XSL 包含三個部分:

  • XSLT

  • ##一種用於轉換XML 文件的語言。

  • XPath

  • 一種用於在 XML 文件中導覽的語言。

  • XSL-FO

  • 一種用於格式化 XML 文件的語言。

 


#XSLT 是一種用於將XML 文檔轉換為XHTML 文件或其他XML 文檔的語言。

XPath 是一種用於在 XML 文件中進行導覽的語言。

學習之前,您需要具備的基礎知識:

在您繼續學習之前,需要對以下知識有基本的了解:

  • HTML / XHTML

  • XML / XML 命名空間

  • ##XPath
  • 如果您希望先學習這些項目,請在我們的 首頁 造訪這些教學。

什麼是 XSLT?

    XSLT 指 XSL 轉換(XSL Transformations)。
  • XSLT 是 XSL 中最重要的部分。
  • XSLT 可將一種 XML 文檔轉換為另外一種 XML 文件。
  • XSLT 使用 XPath 在 XML 文件中進行導覽。
  • XPath 是一個 W3C 標準。

XSLT = XSL 轉換

XSLT 是 XSL 中最重要的部分。

XSLT 用於將一種 XML 文檔轉換為另一種 XML 文檔,或可被瀏覽器識別的其他類型的文檔,例如 HTML 和 XHTML。通常,XSLT 是透過把每個 XML 元素轉換為 (X)HTML 元素來完成這項工作的。

透過 XSLT,您可以向或從輸出檔案新增或移除元素和屬性。您也可以重新排列元素,執行測試並決定要隱藏或顯示哪個元素,等等。

描述轉換過程的一個通常的說法是,

XSLT 把 XML 來源樹轉換為 XML 結果樹

XSLT 使用 XPath

XSLT 使用 XPath 在 XML 文件中尋找資訊。 XPath 被用來透過元素和屬性在 XML 文件中進行導覽。

如果您希望先學習 XPath,請造訪我們的 XPath 教學。

它如何運作?

在轉換過程中,XSLT 使用 XPath 來定義來源文件中可符合一個或多個預定義範本的部分。一旦符合被找到,XSLT 就會把來源文件的符合部分轉換為結果文件。

 

正確的樣式表宣告

#把文件宣告為XSL 樣式表的根元素是

註解: 是完全同義的,都可以使用!

根據W3C 的XSLT 標準,宣告XSL 樣式表的正確方法是:

 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
登入後複製

 

或:

 

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
登入後複製

 

如需存取XSLT 的元素、屬性以及特性,我們必須在文件頂端宣告XSLT 命名空間。

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 指向了官方的 W3C XSLT 命名空间。如果您使用此命名空间,就必须包含属性 version="1.0"。

从一个原始的 XML 文档开始

我们现在要把下面这个 XML 文档("cdcatalog.xml")转换为 XHTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>
登入後複製

在 Internet Explorer 和 Firefox 中查看 XML 文件:

打开 XML 文件(通常通过点击某个链接) - XML 文档会以颜色化的代码方式来显示根元素及子元素。点击元素左侧的加号或减号可展开或收缩元素的结构。如需查看原始的XML源文件(不带有加号和减号),请在浏览器菜单中选择“查看页面源代码”。

在 Netscape 6 中查看 XML 文件:

打开 XML 文件,然后在 XML 文件中右击,并选择“查看页面源代码”。XML文档会以颜色化的代码方式来显示根元素及子元素。

在 Opera 7 中查看 XML 文件:

打开 XML 文件,然后在XML文件中右击,选择“框架”/“查看源代码”。XML文档将显示为纯文本。

创建 XSL 样式表

然后创建一个带有转换模板的 XSL 样式表("cdcatalog.xsl"):

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


  
  
    

My CD Collection

Title Artist
登入後複製

把 XSL 样式表链接到 XML 文档

向 XML 文档("cdcatalog.xml")添加 XSL 样式表引用:

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?><catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>
登入後複製

元素

元素用于构建模板。

match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。

好了,让我们看一下上一节中的 XSL 文件的简化版本:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
 <body>
   <h2>My CD Collection</h2>
   <table border="1">
     <tr bgcolor="#9acd32">
       <th>Title</th>
       <th>Artist</th>
     </tr>
     <tr>
       <td>.</td>
       <td>.</td>
     </tr>
   </table>
 </body>
 </html>
</xsl:template>

</xsl:stylesheet>
登入後複製

代码解释:

由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:

<?xml version="1.0" encoding="ISO-8859-1"?>
登入後複製

下一个元素,,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。

元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系。

元素内部的内容定义了写到输出结果的 HTML 代码。

最后两行定义了模板的结尾,及样式表的结尾。

以上转换的结果类似这样:

元素

元素用于提取某个选定节点的值,并把值添加到转换的输出流中:

<?xml version="1.0" encoding="ISO-8859-1"?>



 
 
   

My CD Collection

Title Artist
登入後複製

注释:select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。

上面的转换结果类似这样:


元素

元素可用于选取指定的节点集中的每个 XML 元素。

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist
登入後複製

注释:select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。

上面的转换结果类似这样:

结果过滤

通过在 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。

<xsl:for-each select="catalog/cd[artist=&#39;Bob Dylan&#39;]">
登入後複製

合法的过滤运算符:

  • = (等于)

  • != (不等于)

  • < (小于)

  • > (大于)

<?xml version="1.0" encoding="ISO-8859-1"?>



 
  
  

My CD Collection

<xsl:for-each select="catalog/cd[artist=&#39;Bob Dylan&#39;]">
Title Artist
登入後複製

上面的转换结果类似这样:


元素用于对结果进行排序。

在何处放置排序信息

如需对结果进行排序,只要简单地在 XSL 文件中的 元素内部添加一个 元素:

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist
登入後複製

注释:select 属性指示需要排序的 XML 元素。

上面的转换结果类似这样:


元素

如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 元素。

语法

<xsl:if test="expression">
  ...
  ...如果条件成立则输出...
  ...
</xsl:if>
登入後複製

在何处放置 元素

如需添加有条件的测试,请在 XSL 文件中的 元素内部添加 元素:

<?xml version="1.0" encoding="ISO-8859-1"?>


  
  
    

My CD Collection

Title Artist
登入後複製

注释:必选的 test 属性的值包含了需要求值的表达式。

上面的代码仅仅会输出价格高于 10 的 CD 的 title 和 artist 元素。

上面的转换结果类似这样:


元素

语法

<xsl:choose>
  <xsl:when test="expression">
    ... 输出 ...
  </xsl:when>
  <xsl:otherwise>
    ... 输出 ....
  </xsl:otherwise>
</xsl:choose>
登入後複製

在何处放置选择条件

要插入针对 XML 文件的多重条件测试,请向 XSL 文件添加 以及

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist
登入後複製

上面的代码会在 CD 的价格高于 10 时向 "Artist" 列添加粉色的背景颜色。

上面的转换结果类似这样:

查看此 XML 文件,查看此 XSL 文件,查看结果。

另一个例子

这是另外一个包含两个 元素的例子:

<?xml version="1.0" encoding="ISO-8859-1"?>



  
  
    

My CD Collection

Title Artist
登入後複製

上面的代码会在 CD 的价格高于 10 时向 "Artist" 列添加粉色的背景颜色,并在 CD 的价格高于 9 且低于等于 10 时向 "Artist" 列添加灰色的背景颜色。

上面的转换结果类似这样:


元素

元素可把一个模板应用于当前的元素或者当前元素的子节点。

假如我们向 元素添加一个 select 属性,此元素就会仅仅处理与属性值匹配的子元素。我们可以使用 select 属性来规定子节点被处理的顺序。

请看下面的 XSL 样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>





My CD Collection

Title:
Artist:
登入後複製

 

XSLT 元素

如果您需要有关下列元素的更详细的信息,请点击元素列中的链接。

  • N: 表示最早支持此标签的 Netscape 版本

  • IE: 表示最早支持此标签的 Internet Explorer 版本

注释:在 IE 5 中所支持的元素可能出现非标准的行为,这是由于 IE 5 发布于 XSLT 被确立为正式的 W3C 标准之前。

元素 描述 IE #N
apply-imports 套用來自匯入樣式表中的模版規則。 6.0  
apply-templates #在目前元素或目前元素的子元素上套用範本。 5.0 6.0
attribute 為元素新增屬性。 5.0 6.0
attribute-set 建立命名的屬性集。 6.0 6.0
call-template #呼叫一個指定的模板。 6.0 6.0
choose 以及協同使用,來表達多重條件測試。 5.0 6.0
comment 在結果樹中建立註解節點。 5.0 6.0
copy 建立目前節點的備份(無子節點及屬性)。 5.0 6.0
copy-of 建立目前節點的備份(帶有子節點及屬性)。 6.0 6.0
#decimal-format 定義當透過format-number() 函數把數字轉換為字串時,所要使用的字元和符號。 6.0  
element 在輸出文件中建立一個元素節點。 5.0 6.0
fallback 假如處理器不支援某個XSLT元素,規定一段備用程式碼來運作。 6.0  
for-each 遍歷指定的節點集中的每個節點。 5.0 6.0
if 包含一個模板,僅當某個指定的條件成立時套用此模板。 5.0 6.0
import 用來把一個樣式表中的內容倒入另一個樣式表中。 6.0 6.0
include 把一個樣式表中的內容包含到另一個樣式表中。 6.0 6.0
key 聲明一個命名的鍵。 6.0 6.0
message 寫入訊息到輸出(用於錯誤報告)。 6.0 6.0
namespace-alias #將樣式表中的命名空間替換為輸出中不同的命名空間。 6.0  
number 測定目前節點的整數位置,並對數字進行格式化。 6.0 6.0
otherwise 規定 元素的預設動作。 5.0 6.0
output 定義輸出文件的格式。 6.0 6.0
param 宣告一個局部或全域參數。 6.0 6.0
preserve-space #用來定義保留空白的元素。 6.0 6.0
#processing-instruction 產生處理指令節點。 5.0 6.0
sort 對結果進行排序。 6.0 6.0
#strip-space 定義空白字元應刪除的元素。 6.0 6.0
stylesheet 定義樣式表的根元素。 5.0 6.0
template 當指定的節點被比對時所應用的規則。 5.0 6.0
text 透過樣式表產生文字節點。 5.0 6.0
transform 定義樣式表的根元素。 6.0 6.0
#value-of 提取選定節點的值。 5.0 6.0
variable 宣告局部或全域的變數。 6.0 6.0
when 規定 元素的動作。 5.0 6.0
#with-param 規定需被傳入某個範本的參數的值。 6.0 6.0

以上就是瘋狂XML學習筆記(11)------ -----XSLT講解的內容,更多相關內容請關注PHP中文網(www.php.cn)!

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

能否用PowerPoint開啟XML文件 能否用PowerPoint開啟XML文件 Feb 19, 2024 pm 09:06 PM

XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方

使用Python實現XML資料的合併與去重 使用Python實現XML資料的合併與去重 Aug 07, 2023 am 11:33 AM

使用Python實現XML資料的合併和去重XML(eXtensibleMarkupLanguage)是一種用於儲存和傳輸資料的標記語言。在處理XML資料時,有時候我們需要將多個XML檔案合併成一個,或移除重複的資料。本文將介紹如何使用Python實現XML資料的合併和去重的方法,並給出對應的程式碼範例。一、XML資料合併當我們有多個XML文件,需要將其合

使用Python實現XML資料的篩選和排序 使用Python實現XML資料的篩選和排序 Aug 07, 2023 pm 04:17 PM

使用Python實現XML資料的篩選和排序引言:XML是一種常用的資料交換格式,它以標籤和屬性的形式儲存資料。在處理XML資料時,我們經常需要對資料進行篩選和排序。 Python提供了許多有用的工具和函式庫來處理XML數據,本文將介紹如何使用Python實現XML資料的篩選和排序。讀取XML檔案在開始之前,我們需要先讀取XML檔案。 Python有許多XML處理函式庫,

Python中的XML資料轉換為CSV格式 Python中的XML資料轉換為CSV格式 Aug 11, 2023 pm 07:41 PM

Python中的XML資料轉換為CSV格式XML(ExtensibleMarkupLanguage)是一種可擴充標記語言,常用於資料的儲存與傳輸。而CSV(CommaSeparatedValues)則是一種以逗號分隔的文字檔案格式,常用於資料的匯入和匯出。在處理資料時,有時需要將XML資料轉換為CSV格式以便於分析和處理。 Python作為一種功能強大

使用PHP將XML資料匯入資料庫 使用PHP將XML資料匯入資料庫 Aug 07, 2023 am 09:58 AM

使用PHP將XML資料匯入資料庫引言:在開發中,我們經常需要將外部資料匯入到資料庫中進行進一步的處理和分析。而XML作為一種常用的資料交換格式,也常被用來儲存和傳輸結構化資料。本文將介紹如何使用PHP將XML資料匯入資料庫。步驟一:解析XML文件首先,我們需要解析XML文件,擷取所需的資料。 PHP提供了幾種解析XML的方式,其中最常用的是使用Simple

Python實作XML與JSON之間的轉換 Python實作XML與JSON之間的轉換 Aug 07, 2023 pm 07:10 PM

Python實作XML與JSON之間的轉換導語:在日常的開發過程中,我們常常需要將資料在不同的格式之間轉換。 XML和JSON是常見的資料交換格式,在Python中,我們可以使用各種函式庫來實作XML和JSON之間的相互轉換。本文將介紹幾種常用的方法,並附帶程式碼範例。一、XML轉JSON在Python中,我們可以使用xml.etree.ElementTree模

使用Python處理XML中的錯誤和異常 使用Python處理XML中的錯誤和異常 Aug 08, 2023 pm 12:25 PM

使用Python處理XML中的錯誤和異常XML是一種常用的資料格式,用於儲存和表示結構化的資料。當我們使用Python處理XML時,有時可能會遇到一些錯誤和異常。在本篇文章中,我將介紹如何使用Python來處理XML中的錯誤和異常,並提供一些範例程式碼供參考。使用try-except語句捕捉XML解析錯誤當我們使用Python解析XML時,有時候可能會遇到一些

C#開發中如何處理XML和JSON資料格式 C#開發中如何處理XML和JSON資料格式 Oct 09, 2023 pm 06:15 PM

C#開發中如何處理XML和JSON資料格式,需要具體程式碼範例在現代軟體開發中,XML和JSON是廣泛應用的兩種資料格式。 XML(可擴展標記語言)是一種用於儲存和傳輸資料的標記語言,而JSON(JavaScript物件表示)是一種輕量級的資料交換格式。在C#開發中,我們經常需要處理和操作XML和JSON數據,本文將重點放在如何使用C#處理這兩種數據格式,並附上

See all articles