曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<xsl:template match="PERIODIC_TABLE">
<xsl:value-of select="ATOM"/>
</xsl:template>
有兩種方法可依次處理多個元素。第一種方法已經看到了。只需要按下列方式與select 特性(它選擇想要包括的特定元素)
一起使用xsl:apply-templates:
<xsl:template match="PERIODIC_TABLE">
<xsl:apply-templates select="ATOM"/>
</xsl:template>
<xsl:template match="ATOM">
<xsl:value-of select="."/>
</xsl:template>
第二個模板中的select="."告訴格式化程序取匹配的元素(本例中的ATOM)的值。
第二種方法是使用xsl:for-each。xsl:for-each 元素依次處理由其select 特性選擇的每個元素。不過,無需任何附加的模
板。例如:
<xsl:template match="PERIODIC_TABLE">
<xsl:for-each select="ATOM">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
如果省略select 特性,那么處理源節點(本例中的PERIODIC_TABLE)的所有子節點。
<xsl:template match="PERIODIC_TABLE">
<xsl:for-each>
XML 實用大全
第 464 頁
<xsl:value-of select="ATOM"/>
</xsl:for-each>
</xsl:template>
XML 實用大全
第 465 頁
14.6 匹配節點的模式
xsl:template 元素的match 特性支持復雜的語法,允許人們精確地表達想要和不想要與哪個節點匹配。
xsl:apply-templates、xsl:value-of、xsl:for-each、xsl:copy-of 和xsl:sort 的select 特性支持功能更加強大的語法
的超集,允許人們精確地表達想要和不想要選擇哪個節點。下面討論匹配和選擇節點的各種模式。
14.6.1 匹配根節點
為了使輸出的文檔結構整潔。從XSL 變換的第一個輸出內容應為輸出文檔的根元素。因此,XSL 樣式單一般以應用于根節點
的規則開始。要在規則中指定根節點,可將其match 特性設置為合適的值。例如:
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
本規則應用于根節點,并且只應用于輸入樹形結構的根節點。當讀取到此根節點時,就輸出<html>標記,處理根節點的子節
點,然后輸出</html>標記。本規則推翻了根節點的缺省規則。清單14-6 顯示了應用于根節點的帶有單一規則的樣式單。
清單14-6:用于根節點的帶有單一規則的XSL 樣式單
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/">
<html>
<head>
<title>Atomic Number vs. Atomic Weight</title>
</head>
<body>
<table>
Atom data will go here
XML 實用大全
第 466 頁
< /table>
</body>
</html >
</xsl:template>
</xsl:stylesheet>
由于本樣式單只為根節點提供一條規則,并且由于規則的模板未指明對子節點進行進一步的處理,因而只是按原樣輸出,所
以在模板中所看到的所有內容都將插入到結果文檔中。換句話說,將清單14-6 中的樣式單應用于清單14-1(或其他任何結
構整潔的XML 文檔)中,所獲得的結果如下:
<html><head><title>Atomic Number vs. Atomic
Weight</title></head><body><table>
Atom data will go here
</table></body></html>
14.6.2 匹配元素名
正如前面介紹的那樣,最基本的模式只包含一個元素名,用來匹配所有帶有該名的元素。例如,下面的模板與ATOM 元素相
匹配,并將ATOM 元素的ATOMIC_NUMBER 的子元素標成粗體:
<xsl:template match=”ATOM”>
<b><xsl:value-of select=”ATOMIC_NUMBER”/><b>
</xsl:template>
清單14-7 顯示的是擴充了清單14-6 的樣式單。首先,在根節點的規則模板中包括了xsl:apply-templates 元素。此規則使
用select 特性來確保只有PERIODIC_TABLE 元素獲得處理。
其次,使用match=“PERIODIC_TABLE”語句創建了只適用于PERIODIC_TABLE 元素的規則。本規則設置周期表的標題,然后
應用模板來從ATOM 元素中生成周期表的主體。
最后,ATOM 規則使用<xsl:apply-templates select=“NAME”/>、<xsl:apply-templates select=“ATOMIC_NUMBER”/>和
<xsl:apply templates select=“ATOMIC_WEIGHT”/>,明確地選擇ATOM 元素的NAME、ATOMIC_NUMBER 和ATOMIC_WEIGHT
子元素。它們都包裝在HTML 的tr 和td 元素中,以便最終的結果是與原子量相匹配的原子序數表。圖14-4 顯示將清單14-7
中的樣式單應用于整個周期表文檔中的輸出結果。
對本樣式單需要注意的是:在輸入文檔中的NAME、ATOMIC_NUMBER 和ATOMIC_WEIGHT 元素的精確順序是不重要的。它們在輸
出文檔中以選擇它們的順序出現,也就是說首先為原子序數,然后是原子量。相反,在輸入文檔中,各個原子依字母順序排
序。以后,將會看到如何使用xsl:sort 元素來改變這個順序,以便使用更常規的原子序數的順序來排列原子。
XML 實用大全
第 467 頁
清單14-7:利用select 的施用于元素的特定類的模板
<?xml version=”1.0”?>
<xsl:stylesheet
xmlns:xsl=”http://www.w3.org/XSL/Transform/1.0”>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(131)