曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<GREETING>
Hello XML!
</GREETING>
XML 實用大全
第 125 頁
假如要向標題H1 中復制致詞“Hello XML!”首先,使用xsl:for-each 選擇GREETING 元素:
<xsl:for-each select="GREETING">
<H1>
</H1>
</xsl:for-each>
只用這一段語句足以把兩個H1 標記復制到輸出中。使用沒有select 屬性的xsl:value-of 在兩個H1 標記之間放置GREETING
元素的文本,當前元素(GREETING)的內容就會被默認選中。清單5-9 顯示了完整的樣式單。
清單5-9:greeting.xsl
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<BODY>
<xsl:for-each select="GREETING">
<H1>
<xsl:value-of/>
</H1>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
使用select 同樣可以選擇一個子元素中的內容,只需把該子元素的名稱當作xsl:value-of 的select 屬性值。例如,在上
一章的棒球示例中,隊員統計被存儲在子元素而不是屬性中。假定文檔的結構是這樣(事實上這種結構比本章中的基于屬性
的結構更常見),表示擊球員表格的XSL 如下所示:
<TABLE>
XML 實用大全
第 126 頁
<CAPTION><B>Batters</B></CAPTION>
<THEAD>
<TR>
<TH>Player</TH><TH>P</TH><TH>G</TH>
<TH>GS</TH><TH>AB</TH><TH>R</TH><TH>H</TH>
<TH>D</TH><TH>T</TH><TH>HR</TH><TH>RBI</TH>
<TH>S</TH><TH>CS</TH><TH>SH</TH><TH>SF</TH>
<TH>E</TH><TH>BB</TH><TH>SO</TH><TH>HBP</TH>
</TR>
</THEAD>
<TBODY>
<xsl:for-each select="PLAYER [(POSITION
!= Starting Pitcher ) $and$(POSITION != Relief Pitcher )]">
<TR>
<TD>
<xsl:value-of select="GIVEN_NAME"/>
<xsl:value-of select="SURNAME"/>
</TD>
<TD><xsl:value-of select="POSITION"/></TD>
<TD><xsl:value-of select="GAMES"/></TD>
<TD>
<xsl:value-of select="GAMES_STARTED"/>
</TD>
<TD><xsl:value-of select="AT_BATS"/></TD>
XML 實用大全
第 127 頁
<TD><xsl:value-of select="RUNS"/></TD>
<TD><xsl:value-of select="HITS"/></TD>
<TD><xsl:value-of select="DOUBLES"/></TD>
<TD><xsl:value-of select="TRIPLES"/></TD>
<TD><xsl:value-of select="HOME_RUNS"/></TD>
<TD><xsl:value-of select="RBI"/></TD>
<TD><xsl:value-of select="STEALS"/></TD>
<TD>
<xsl:value-of select="CAUGHT_STEALING"/>
</TD>
<TD>
<xsl:value-of select="SACRIFICE_HITS"/>
</TD>
<TD>
<xsl:value-of select="SACRIFICE_FLIES"/>
</TD>
<TD><xsl:value-of select="ERRORS"/></TD>
<TD><xsl:value-of select="WALKS"/></TD>
<TD>
<xsl:value-of select="STRUCK_OUT"/>
</TD>
<TD>
<xsl:value-of select="HIT_BY_PITCH"/>
</TD>
XML 實用大全
第 128 頁
</TR>
</xsl:for-each><!— PLAYER —>
</TBODY>
</TABLE>
在這種情況下,在每個PLAYER 元素的子元素中,該元素的GIVEN_NAME、SURNAME、POSITION、GAMES、GAMES_STARTED、 AT_BATS、
RUNS、HITS、DOUBLES、TRIPLES、HOME_RUNS、RBI、STEALS、CAUGHT_STEALING、SACRIFICE_HITS、SACRIFICE_FLIES、ERRORS、
WALKS、STRUCK_OUT 和HIT_BY_PITCH 子元素的內容被抽取出來并被復制到輸出文檔中。因為本章使用了與上一章PLAYER 子
元素名稱相同的屬性名,該示例與清單5-7 幾乎是一致的。主要差別是@符號沒有了。它表明這是一個屬性而不是一個元素。
select 屬性的功能很多。可選擇元素:按元素位置(例如第一、第二、最后、第十七個元素等等);按特定的內容;按特
殊的屬性值;或者按照元素的父或子元素含有一定的內容或屬性值進行選擇。甚至可以使用全部布爾邏輯運算符來組合各種
不同的選擇條件。在14 章的XSL 中將要探討使用select 屬性的更多可能。
5.4.8 CSS 還是XSL
CSS 與XSL 在某種程度上是重復的。XSL 的功能確實比CSS 更強大,但是XSL 的功能與其復雜性是分不開的。這一章僅僅涉
及了XSL 最基本的用途。實際上XSL 更復雜,而且比CSS 更難學習和使用,同時也帶來了一個問題:“什么時候應該使用
CSS,什么時候應該使用XSL?”
CSS 比XSL 得到更廣泛的支持。部分CSS Level 1 被Netscape 4 和Internet Exploer 4 支持作為HTML 元素(盡管存在一
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(40)