精華區beta b885060xx 關於我們 聯絡資訊
啥是 XSL 先前介紹了 XML 的進階和基本的用法,而先前也提到 XML 只是在定義資料型態 和內容,網頁的表現方式幾乎都不是 XML 的事。也因為 CSS 的概念被引進網頁 的技術中,所以在 XML 裡,也引進了相同的技術,稱做 XSL。eXtensible Stylesheet Language就是它的全名。而他的功能就和 CSS 在 HTML 裡的一樣, 甚至更強大。我現在就解釋一下何謂 XSL。 先看看下面的原始碼: <xsl:template match="HARDWARE"> <P> <xsl:process-children/> </P> </xsl:template> 這是啥意思呢?各位注意在 <P> </P> 之間的那段,在 XSL 中任何一個標籤如果 有斜線在標籤的後面,這代表這個標籤是不需要結束的,就像 <IMG> 的意思一樣 。那在 <P> </P> 前後的標籤就是一般的標籤啦!在注意第一個標籤 ,match="HARDWARE" ,聰明的你可能已經猜出來這個意思。所以這整段原始碼的 意思就是將所有與 HARDWARE 相同的標籤放入 <P> </P> 之間。由這段原始馬克 為應該可以看出,XSL 其實不只是在做呈現的工作而已,它還會將 XML 重新翻譯 、編譯一次,之後再表現在網頁中,有了這個優點,我們可以簡單的將所有在 XML 中的資料做任和我們想要的排列,任何我們想要的呈現方式。例如:我們可 以設定密碼,對不同的身份的使用呈現不同的資料,而當我們完成了資料的建立 ﹝XML﹞後﹝注意我只需要一筆完整的資料就好了。﹞,再根據不同的使用者設計 不同的介面﹝XSL﹞,如此一來無論我的資料是多麼多與複雜,我都只要在XML 之 中編輯就行了,就像資料庫一樣。而無論我有多少不同的使用者身分,一但他們 的網頁介面建立好之後,就不需要在更動了,XSL 自然會將 XML 中更新的資料加 入網頁中。各位聽過網際光華商場吧?!各位也知道要得到所有的電腦硬體的報 價是必須加入會員的,沒有加入會員是無法得到所有光華商場的商品的報價的, 而非會員也只能看到一般的網頁,會員的話就可以看到所有的商品的報價的網頁 。這就是說當光華商場的商品價錢有任何的更動時,網管人員就必須對這兩頁做 更動的動作,相當耗時。用資料庫做又怕人數太多必須加大頻寬,何況在網站的 管理上務必要一位懂得資料庫設計和維護的人員,這就增加了成本。有了 XML 加 上 XSL 後,一般的網頁設計人員就算不懂資料庫和程式設計也可以輕易的做好網 管的工作。而請一位網頁設計人員的薪水一定比請一位程式設計師的薪水少,加 上頻寬無須增加,成本在無形中就減少了相當多。 抱歉,廢話太多了‧‧‧‧ XSL 完整的原始碼 1<xsl:stylesheet> 2<xsl:template match = "/"> <HTML> <BODY> <xsl:process-children/> </BODY> </HTML> 3</xsl:template> 4<xsl:template match = "author"> <H1> <xsl:process-children/>'s fabulous </H1> </xsl:template> 5<xsl:template match = "recipe_name"> <H2> <xsl:process-children/> </H2> </xsl:template> 6<xsl:template match = "meal"> <TABLE><TR><TD><H3>EAT FOR:</H3></TD> 7<TD><H3><xsl:process-children/></H3></TD> </TR></TABLE> </xsl:template> 8<xsl:template match = "directions"><H4>DIRECTIONS</H4><P><xsl:process-children/></P> </xsl:template> 9<xsl:template match = "ingredients"> <B>INGREDIENTS</B><BR></BR> <xsl:process-children/> </xsl:template> 10<xsl:template match = "item"> <BR> <xsl:process-children/> </BR> </xsl:template> </xsl:stylesheet> 這個原始碼我從第二行開始說起吧,/ 代表著這是文件最頂端,也就是開始的地 方,接下的皆是告訴瀏覽器從這裡開始將所有在 <HTML> <BODY> 中的東西皆列出 來,也就是所有的文件。最後再加上 </BODY> </HTML> 這個結束標籤。 既然已經宣告所有的東西皆要被列出來,那下面的東東是幹麻的?這又要提到 XSL 的規則了:如果文件中宣告了十個標籤,最接近 XML 中所定義的將會被列出 ,至於其他的就會被寫過了。也就是說雖然第一行已經將所有的標籤宣告要列出 ,但因為下面的元件有清楚地指出是哪一個 XML 標籤,所以只有下面有清楚指定 標籤名稱的會被列出來。 結語 XSL 的運用當然不祇是我是上面介紹的這些而已,一般的 HTML、CSS 語法都可以 輕易的加入 XSL 之中。我基於之前有說過 CSS 語法了,而 HTML 的語法大家又 相當的熟悉,所以這兒就不再提了。我這部分應該就到此為了,等到 W3C 有進一 步的 RECOMMENDATION 時我在繼續寫下去。