搜尋
首頁後端開發XML/RSS教程瘋狂XML學習筆記(11)-----------XSLT講解


前面對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 id="My-nbsp-CD-nbsp-Collection">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 源文档的根相联系。

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

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

 

 

元素

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

<?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;]">

合法的过滤运算符:

  • =  (等于)

  • != (不等于)

  • 363535d26c327c0d81ed29d457003451 (大于)

<?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
RSS和XML:了解Web內容的動態二重奏RSS和XML:了解Web內容的動態二重奏Apr 19, 2025 am 12:03 AM

RSS和XML是用於網絡內容管理的工具。 RSS用於發布和訂閱內容,XML用於存儲和傳輸數據。它們的工作原理包括內容髮布、訂閱和更新推送。使用示例包括RSS發布博客文章和XML存儲書籍信息。

RSS文檔:Web聯合組織的基礎RSS文檔:Web聯合組織的基礎Apr 18, 2025 am 12:04 AM

RSS文檔是基於XML的結構化文件,用於發布和訂閱頻繁更新的內容。它的主要作用包括:1)自動化內容更新,2)內容聚合,3)提高瀏覽效率。通過RSSfeed,用戶可以訂閱並及時獲取來自不同來源的最新信息。

解碼RSS:內容提要的XML結構解碼RSS:內容提要的XML結構Apr 17, 2025 am 12:09 AM

RSS的XML結構包括:1.XML聲明和RSS版本,2.頻道(Channel),3.條目(Item)。這些部分構成了RSS文件的基礎,允許用戶通過解析XML數據來獲取和處理內容信息。

如何解析和利用基於XML的RSS提要如何解析和利用基於XML的RSS提要Apr 16, 2025 am 12:05 AM

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。

RSS文檔:他們如何提供您喜歡的內容RSS文檔:他們如何提供您喜歡的內容Apr 15, 2025 am 12:01 AM

RSS文檔的工作原理是通過XML文件發佈內容更新,用戶通過RSS閱讀器訂閱並接收通知。 1.內容髮布者創建並更新RSS文檔。 2.RSS閱讀器定期訪問並解析XML文件。 3.用戶瀏覽和閱讀更新內容。使用示例:訂閱TechCrunch的RSS源,只需複制鏈接到RSS閱讀器中即可。

用XML建造供稿:RSS的動手指南用XML建造供稿:RSS的動手指南Apr 14, 2025 am 12:17 AM

使用XML構建RSSfeed的步驟如下:1.創建根元素並設置版本;2.添加channel元素及其基本信息;3.添加條目(item)元素,包括標題、鏈接和描述;4.轉換XML結構為字符串並輸出。通過這些步驟,你可以從零開始創建一個有效的RSSfeed,並通過添加額外的元素如發布日期和作者信息來增強其功能。

創建RSS文檔:逐步教程創建RSS文檔:逐步教程Apr 13, 2025 am 12:10 AM

創建RSS文檔的步驟如下:1.使用XML格式編寫,根元素為,包含元素。 2.在內添加、、等元素描述頻道信息。 3.添加元素,每個代表一個內容條目,包含、、、等。 4.可選地添加和元素,豐富內容。 5.確保XML格式正確,使用在線工具驗證,優化性能並保持內容更新。

XML在RSS中的作用:聯合內容的基礎XML在RSS中的作用:聯合內容的基礎Apr 12, 2025 am 12:17 AM

XML在RSS中的核心作用是提供一種標準化和靈活的數據格式。 1.XML的結構和標記語言特性使其適合數據交換和存儲。 2.RSS利用XML創建標準化格式,方便內容共享。 3.XML在RSS中的應用包括定義feed內容的元素,如標題和發布日期。 4.優勢包括標準化和可擴展性,挑戰包括文件冗長和嚴格語法要求。 5.最佳實踐包括驗證XML有效性、保持簡潔、使用CDATA和定期更新。

See all articles

熱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 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

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