曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
XML 實用大全
第 106 頁
這些指令出現兩次是因為我們希望年份在輸出結果中出現兩次,一次在H1 主題中,一次在TITLE 中。這些指令每次出現都
執行同樣的功能。<xsl:for-each select="SEASON">尋出全部SEASON 元素。<xsl:value-of select="@YEAR"/>插入SEASON
元素中的YEAR 屬性值——這就是由<xsl:for-each select="SEASON">找到的字符串“1998”。
這非常重要,重述如下:xsl:for-each 選出源文檔(例如清單5-1)中的某一特定的XML 元素,數據就從此元素中讀取。
Xsl:value-of 把所選取元素的某一特定部分復制到輸出文檔中。因此,必須使用兩個XSL 指令。使用任何一個都是無效的。
XSL 指令不同于輸出的HTML 和H1 元素是因為這些指令都處于XSL 的命名域內。也就是說所有的XSL 元素名稱都以xsl:開頭。
命名域由樣式單根元素中的xmlns:xsl 屬性辨別。本書中的清單5-2,5-3 和所有其他示例中xmlns:xsl 屬性的值都是
http://www.w3.org/tr/wd-xsl。
命名域將在第18 章中詳細闡述。
5.4.4 聯賽、分部和球隊
下面通過添加一些XSL 指令取出前面出現過的兩個LEAGUE 元素,并把這兩個元素映射到H2 標題中,如清單5-4 所示。圖
5-6 顯示了使用該樣式單后的文檔。
清單5-4:一個帶有提取LEAGUE 元素指令的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>
<xsl:for-each select="SEASON">
<xsl:value-of select="@YEAR"/>
</xsl:for-each>
Major League Baseball Statistics
</TITLE>
</HEAD>
<BODY>
<xsl:for-each select="SEASON">
XML 實用大全
第 107 頁
<H1>
<xsl:value-of select="@YEAR"/>
Major League Baseball Statistics
</H1>
<xsl:for-each select="LEAGUE">
<H2 ALIGN="CENTER">
<xsl:value-of select="@NAME"/>
</H2>
</xsl:for-each>
</xsl:for-each>
<HR></HR>
Copyright 1999
<A HREF="http://www.macfaq.com/personal.html">
Elliotte Rusty Harold
</A>
<BR />
<A HREF="mailto:elharo@metalab.unc.edu">
elharo@metalab.unc.edu
</A>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
XML 實用大全
第 108 頁
圖5-6 當采用清單5-4 中的樣式單之后,聯賽名稱顯示為H2 標題樣式
關鍵的新要素是嵌套的xsl:for-each 指令:
<xsl:for-each select="SEASON">
<H1>
<xsl:value-of select="@YEAR"/>
Major League Baseball Statistics
</H1>
<xsl:for-each select="LEAGUE">
<H2 ALIGN="CENTER">
<xsl:value-of select="@NAME"/>
</H2>
</xsl:for-each>
</xsl:for-each>
最外層的指令用于選取SEASON 元素,只有找到該元素才能找到它的YEAR 屬性,并把它的值與另外的文本Major League
Baseball Statistics 一起放到<H1>與</H1>之間。下一步瀏覽器會循環選取SEASON 元素的每一個LEAGUE 子元素,并把它
的NAME 屬性值放到<H2 ALIGN ="CENTER"> 與</H2>之間。盡管只有一個xsl:for-each 與LEAGUE 元素相配,但是它會對SEASON
元素內所有直接的LEAGUE 子元素進行循環。因此,該模板在沒有聯賽和聯賽數目不定的情況下都能工作。
XML 實用大全
第 109 頁
同樣的技巧可以用于設計表示小組的H3 標題和表示各球隊的H4 標題。清單5-5 演示了該程序,圖5-7 顯示了使用這一樣式
單后的文檔。各小組名稱和各球隊名稱是從XML 數據中讀取的。
清單5-5:一個帶有提取DIVISION 和TEAM 元素指令的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<HEAD>
<TITLE>
<xsl:for-each select="SEASON">
<xsl:value-of select="@YEAR"/>
</xsl:for-each>
Major League Baseball Statistics
</TITLE>
</HEAD>
<BODY>
<xsl:for-each select="SEASON">
<H1>
<xsl:value-of select="@YEAR"/>
Major League Baseball Statistics
</H1>
<xsl:for-each select="LEAGUE">
<H2 ALIGN="CENTER">
<xsl:value-of select="@NAME"/>
</H2>
XML 實用大全
第 110 頁
<xsl:for-each select="DIVISION">
<H3 ALIGN="CENTER">
<xsl:value-of select="@NAME"/>
</H3>
<xsl:for-each select="TEAM">
<H4 ALIGN="CENTER">
<xsl:value-of select="@CITY"/>
<xsl:value-of select="@NAME"/>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(36)