亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

XSLT入門

系統(tǒng) 2144 0

學(xué)習(xí)資源:

1. http://www.w3school.com.cn/xsl/

2. https://www6.software.ibm.com/developerworks/cn/education/xml/x-introxslt/section2.html

?

?

1.XSLT的概念

我們首先來澄清一個概念,大家可能聽說過XSL(eXtensible Stylesheet Language),XSL和我們這里說的XSLT從狹義上理解是一樣的,而按照W3C的標(biāo)準(zhǔn),XSLT的說法更嚴(yán)格些,因此我們在文章中統(tǒng)一使用 XSLT的稱法。它們之間具體的關(guān)系我們會在下面講述。

1.1 什么是XSLT

XSLT的英文標(biāo)準(zhǔn)名稱為eXtensible Stylesheet Language Transformation。根據(jù)W3C的規(guī)范說明書(http://www.w3.org/TR/xslt),最早設(shè)計XSLT的用意是幫助XML文 檔(document)轉(zhuǎn)換為其它文檔。但是隨著發(fā)展,XSLT已不僅僅用于將XML轉(zhuǎn)換為HTML或其它文本格式,更全面的定義應(yīng)該是:

XSLT是一種用來轉(zhuǎn)換XML文檔結(jié)構(gòu)的語言。

1.2 為什么要用XSLT

我們已經(jīng)知道,XML是一種電腦程序間交換原始數(shù)據(jù)的簡單而標(biāo)準(zhǔn)的方法。它的成功并不在于它容易被人們書寫和閱讀,更重要的是,它從根本上解決了應(yīng)用系統(tǒng) 間的信息交換。因?yàn)閄ML滿足了兩個基本的需求:

(1).將數(shù)據(jù)和表達(dá)形式分離。就象天氣預(yù)報的信息可以顯示在不同的設(shè)備上,電視,手機(jī)或者其它。

(2).在不同的應(yīng)用之間傳輸數(shù)據(jù)。電子商務(wù)數(shù)據(jù)交換的與日俱增使得這種需求越來越緊迫。

為了使數(shù)據(jù)便于人們的閱讀理解,我們需要將信息顯示出來或者打印出來,例如將數(shù)據(jù)變成一個HTML文件,一個PDF文件,甚至是一段聲音;同樣,為了使數(shù) 據(jù)適合不同的應(yīng)用程序,我們必須有能夠?qū)⒁环N數(shù)據(jù)格式轉(zhuǎn)換為另一種數(shù)據(jù)格式,比如需求格式可能是一個文本文件,一個SQL語句,一個HTTP信息,一定順 序的數(shù)據(jù)調(diào)用等。而XSLT就是我們用來實(shí)現(xiàn)這種轉(zhuǎn)換功能的語言。將XML轉(zhuǎn)換為HTML,是目前XSLT最主要的功能。

?

1.3 什么是XPath

XPath是XSLT的重要組成部分,我們將在第四章講解它的詳細(xì)語法。那么XPath是什么呢?我們首先來了解一下XSL系列的"家族"關(guān)系。如下圖:



XSL在轉(zhuǎn)換XML文檔時分為明顯的兩個過程,第一轉(zhuǎn)換文檔結(jié)構(gòu);其次將文檔格式化輸出。這兩步可以分離開來并單獨(dú)處理,因此XSL在發(fā)展過程中逐漸分裂 為XSLT(結(jié)構(gòu)轉(zhuǎn)換)和XSL-FO(formatting objects)(格式化輸出)兩種分支語言,其中XSL-FO的作用就類似CSS在HTML中的作用。而我們這里重點(diǎn)討論的是第一步的轉(zhuǎn)換過程,也就是 XSLT。

另外,在學(xué)習(xí)XML時我們已經(jīng)知道XML是一個完整的樹結(jié)構(gòu)文檔。在轉(zhuǎn)換XML文檔時可能需要處理其中的一部分(節(jié)點(diǎn))數(shù)據(jù),那么如何查找和定位XML文 檔中的信息呢,XPath就是一種專門用來在XML文檔中查找信息的語言。XPath隸屬XSLT,因此我們通常會將XSLT語法和XPath語法混在一 起說。

用一種比較好理解的解釋:如果將XML文檔看作一個數(shù)據(jù)庫,XPath就是SQL查詢語言;如果將XML文檔看成DOS目錄結(jié)構(gòu),XPath就是 cd,dir等目錄操作命令的集合。

?

1.4 XSLT和CSS的比較

CSS同樣可以格式化XML文檔,那么有了CSS為什么還需要XSLT呢?因?yàn)镃SS雖然能夠很好的控制輸出的樣式,比如色彩,字體,大小等,但是它有嚴(yán) 重的局限性,就是:

(1) CSS不能重新排序文檔中的元素;

(2) CSS不能判斷和控制哪個元素被顯示,哪個不被顯示;

(3) CSS不能統(tǒng)計計算元素中的數(shù)據(jù);

換句話說,CSS只適合用于輸出比較固定的最終文檔。CSS的優(yōu)點(diǎn)是簡潔,消耗系統(tǒng)資源少;而XSLT雖然功能強(qiáng)大,但因?yàn)橐匦滤饕齒ML結(jié)構(gòu)樹,所以 消耗內(nèi)存比較多。

因此,我們常常將它們結(jié)合起來使用,比如在服務(wù)器端用XSLT處理文檔,在客戶端用CSS來控制顯示。可以減少響應(yīng)時間。

?

?

(1)cdcatalog_with_xsl.xml

?

    <?xml version="1.0" encoding="utf-8"?>  
<!--引用xslt轉(zhuǎn)換xml-->  
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>  
<catalog>  
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
	<cd>  
		<title>One night only</title>  
		<artist>Bee Gees</artist>  
		<country>UK</country>  
		<company>Polydor</company>  
		<price>10.90</price>  
		<year>1998</year>  
	</cd>  
	 
</catalog>  
  
??

(2)cdcatalog.xsl

?

    <?xml version="1.0" encoding="utf-8" ?>
<!-- 聲明一個 XSL 樣式表 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!--match 屬性的值是 XPath 表達(dá)式(match="/" 表示匹配整個文檔)-->
  <xsl:template match="/">
    <html>
    <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">標(biāo)題</th>
        <th align="left">作者</th>
        <th align="left">國家</th>
        <th align="left">價格</th>
        <th align="left">年份</th>
      </tr>
      <!-- select="catalog/cd[country='UK'] 選取catalog根節(jié)點(diǎn)下cd節(jié)點(diǎn)下country元素值為"UK"的CD節(jié)點(diǎn)集合-->
      <xsl:for-each select="catalog/cd[country='UK']">
        <!-- 按artist排序-->
        <xsl:sort select="artist"/>
        <!--判定條件 price值>8 執(zhí)行 xsl:if體 -->
        <xsl:if test="price &gt; 8">
          <tr> 
            <!--多重條件判定,結(jié)合 when,otherwise使用-->
            <xsl:choose>
              <xsl:when test="price &gt; 9">
                <!-- xsl:value 輸出元素值-->
                <td bgcolor="#ff00ff"><xsl:value-of select="title"/></td>
              </xsl:when>
              <xsl:otherwise>
                <td><xsl:value-of select="title"/></td>
              </xsl:otherwise>
            </xsl:choose>
            <td><xsl:value-of select="artist"/></td>
            <td><xsl:value-of select="country"/></td>
            <td><xsl:value-of select="price"/></td>
            <td><xsl:value-of select="year"/></td>
          </tr>
        </xsl:if>
      </xsl:for-each>
    </table>
    </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

  
?

?

?

?

?

?

?

?

?

?

XSLT入門


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 538在线视频二三区视视频 | 午夜视频在线网站 | 在线亚洲欧美日韩 | 特黄aa级毛片免费视频播放 | 四虎欧美 | 深夜福利免费 | 久久综合热88 | 日本一级特级毛片视频 | 女性牲交一级毛片 | 亚洲精品色| 狠狠做狠狠做综合日日 | 四虎影院在线视频 | 亚洲波多野结衣日韩在线 | 一区二区在线免费观看 | 久草视频福利在线观看 | 亚洲成人毛片 | 2019年国产高清情侣视频 | 国产大尺度福利视频在线观看 | 天天操精品视频 | 91精品国产人成网站 | 国产在线观看91精品不卡 | 国内精品免费久久影院 | 免费看爱爱视频 | 国产只有精品 | 亚洲欧美另类精品久久久 | 91亚洲精品一区二区在线观看 | 国产精品999 | 亚洲精品久久九九热 | 韩国成人毛片aaa黄 韩国高清不卡一区二区 | 97国产在线播放 | 久久精品中文字幕一区 | 国产精品模特hd在线 | 欧美成人精品免费播放 | 亚洲综合国产精品 | 久热精品香蕉在线视频 | 欧美综合色区 | 久久99视频| 四虎永久成人免费 | 真实国产乱人伦在线视频播放 | 一级欧美毛片成人免费视频 | 青青青手机版视频在线观看 |