日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xsl 操作

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xsl 操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

說白了就是友好的去顯示一個xml文檔

XSL - 不僅僅是樣式表語言

?

XSL 包括三部分:

XSLT

一種用于轉換 XML 文檔的語言。

XSLT 是 XSL 中最重要的部分。

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

通過 XSLT,您可以向或者從輸出文件添加或移除元素和屬性。您也可重新排列元素,執行測試并決定隱藏或顯示哪個元素,等等。

描述轉化過程的一種通常的說法是,XSLT 把 XML 源樹轉換為 XML 結果樹。

XPath

一種用于在 XML 文檔中導航的語言。

XSL-FO

一種用于格式化 XML 文檔的語言。


正確的樣式表聲明

? 把文檔聲明為 XSL 樣式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。

<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"

指向的是xslt的官方命名空間,如果引入和這個命名空間那就要包含屬性 version="1.0"。

從一個原始的 XML 文檔開始

  我們現在要把下面這個 XML 文檔轉換為 XHTML:

<?xml version="1.0" encoding="ISO-8859-1"?> <root><user> <name>張三</name> <age>12</age> <pwd>123</pwd> <sex>男</sex></user> </root> ?

創建 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>用戶信息</h2><table border="1"><tr bgcolor="#9acd32"><th align="left">用戶名</th><th align="left">密碼</th></tr><xsl:for-each select="root/user"> <tr><td><xsl:value-of select="name"/></td> <td><xsl:value-of select="pwd"/></td> </tr></xsl:for-each></table></body></html> </xsl:template></xsl:stylesheet>

把 XSL 樣式表鏈接到 XML 文檔

現在xsl (顯示格式)和xml(數據)都有了?怎么把他們兩個鏈接到一起呢

向 XML 文檔添加 XSL 樣式表引用:

<?xml-stylesheet type="text/xsl" href="xsl的文件"?>

? 這里我對咱們上個例子的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="/">//XSL 樣式表由一個或多套被稱為模板(template)的規則組成。每個模板含有當某個指定的節點被匹配時所應用的規則。match 屬性的值是 XPath 表達式(舉例,match="/" 定義整個文檔)。意思也就是匹配xml文件的(從根開始)<html><body><h2>用戶信息</h2><table border="1"><tr bgcolor="#9acd32"><th align="left">用戶名</th><th align="left">密碼</th></tr><xsl:for-each select="root/user"> //<xsl:for-each> 元素可用于選取指定的節點集中的每個 XML 元素。select 屬性的值是一個 XPath 表達式。此表達式的工作方式類似于定位某個文件系統,在其中正斜杠可選擇子目錄。<xsl:for-each> 元素還可以加過濾<xsl:for-each select="root/user[age='12']"> (意思取的是子節點當中年齡12的)合法的過濾運算符::=? (等于) :!= (不等于):&lt; (小于):&gt; (大于)    <xsl:sort select="age"/> //如需對結果進行排序,只要簡單地在 XSL 文件中的 <xsl:for-each> 元素內部添加一個 <xsl:sort> 元素:<xsl:sort select="age"/> <xsl:if test="age &gt; 10"> //如需添加有條件的測試,請在 XSL 文件中的 <xsl:for-each> 元素內部添加 <xsl:if> 元素test :意思是條件<tr><td><xsl:value-of select="name"/></td> //<xsl:value-of> 元素,<xsl:value-of> 元素用于提取某個選定節點的值,并把值添加到轉換的輸出流中:select 屬性的值是一個 XPath 表達式。此表達式的工作方式類似于定位某個文件系統,在其中正斜杠可選擇子目錄。當我在 <xsl:for-each> 元素可省略從根節點找直接在 <xsl:for-each> 元素下面找<td><xsl:value-of select="pwd"/></td> </tr></xsl:if></xsl:for-each></table></body></html> </xsl:template></xsl:stylesheet> 還可以添加多重判斷<?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>用戶信息</h2><table border="1"><tr bgcolor="#9acd32"><th align="left">用戶名</th><th align="left">密碼</th></tr><xsl:for-each select="root/user"><tr><xsl:choose> <xsl:when test="age &gt; 20"> //多重判斷 判斷我的年齡大于20那么就在醒目右面加一個男人<td><xsl:value-of select="name"/><h6>男人</h6></td></xsl:when><xsl:when test="age &lt; 20 "><xsl:value-of select="name"/><h6>男孩</h6>//如果是20以下加一個男孩</xsl:when><xsl:otherwise> //入伙上面兩種都不是就加一識別不了<xsl:value-of select="name"/><h6>識別不了年齡</h6></xsl:otherwise><td><xsl:value-of select="pwd"/></td></tr></xsl:otherwise></xsl:choose></xsl:for-each></table></body></html></xsl:template></xsl:stylesheet>

XPath 語法

XPath 使用路徑表達式在 XML 文檔中選取節點。節點是通過沿著路徑或者 step 來選取的。

下面列出了最有用的路徑表達式:

nodename:選取此節點的所有子節點。 / : 從根節點選取。 // :從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 . :選取當前節點。:選取當前節點的父節點。 .. :選取當前節點的父節點 @ : 選取屬性。

總結

以上是生活随笔為你收集整理的xsl 操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。