CSS與XSL簡述

 
 
我們非常清楚的是在XML中內容與表現形式是分開的。這就使得不同的用戶可以根據他們自己的需要來定義數據的表現形式。在一個XML的源文件中並沒有關於它表現形式的信息。這一點我們可以從下面例子中看出。
例一:在HTML中的一段代碼
<H1>Car Register</H1>
<H2>Make: Saab 9000 </H2>
<H2>Model: 1995</H2>
<H2>Owner:</H2>
<p>Kalle Karlsson
  Gtgatan 111111 Stockholm
</p>
這是一段典型的HTML代碼。在每一個tag(標籤)中都含有表現形式的信息,而關於tag之間聯繫和結構信息卻沒有了。這事實上約束了HTML的發展。
例二:在XML中的一段代碼
<Car Register>
<Car>
<Registration Number>ABC123 </Registration Number>
<Make>Saab 9000</Make>
<Model>1995 </Model>
<Owner>
<Name>Kalle Karlsson </Name>
<Address>G?tgatan 1 </Address>
<Zip code>11111 </Zip code>
<City>Stockholm </City>
</Owner>
</Car>
</Car Register>
在XML文件之中tag中的信息是非常純的。它沒有表現部分。所以說有人稱XML爲傳輸知識的語言。
那麼XML文件是怎樣表現的呢?
XML文件的所有表現信息多發放在了stylesheet(樣式表)文件當中。stylesheet文件全權負責XML源文件的表現形式。所以說如果一個XML源文件對應不同的stylesheet文件它就會有不同的表現形式. 有了stylesheet文件我們可以對文件表現型始終的大小,顏色,空白作特定的規定。
在這篇文章中我們要來討論的CSS(Cascading Style Sheets 層疊樣式表)和XSL(XML Style Language 可擴展類型語言)就是兩種stylesheet(樣式表)語言。大家會想爲什麼會同時有兩種語言。這不是重複了嗎?其實它們是互相補充,各有特色的。CSS可以展現HTML 和XML文件,而XSL可以展現XML和Transformation(轉型語言)。由此可見它們各有所長。
我們還是來看看例子吧:
例三:一段CSS代碼
H1 {
font-size: 12pt;
font-weight: bold;
color: blue;
}
它規定了H1元素的字體大小,種類和顏色。當然CSS能做到的遠不只這些。還有比如行距,空白大小等等。
下面我們來看一個CSS結合XML源文件的例子。
例四:一段XML源文件
<?XML:stylesheet type="text/css" href="bach.css"?>
<ARTICLE>
<HEADLINE>Fredrick the Great meets Bach</HEADLINE>
<AUTHOR>Johann Nikolaus Forke</AUTHOR>
<PARA>
One evening, just as he was getting his
<INSTRUMENT>flute</INSTRUMENT>ready and his
musicians were assembled, an officer brought him a list of
the strangers who had arrived.
</PARA>
</ARTICLE>
例五:一段XSL代碼,名爲bach.css
INSTRUMENT {display: inline}
ARTICLE, HEADLINE, AUTHOR, PARA {display: block}
HEADLINE {font-size: 1.3em}
AUTHOR {font-style: italic}
ARTICLE, HEADLINE, AUTHOR, PARA {margin: 0.5em}
CSS中頭兩行規定了INSTRUMENT元素是實體的,而ARTICLE, HEADLINE, AUTHOR, PARA元素是虛體的。第三至第五行規定了HEADLINE元素的字體大小,AUTHOR元素是意大利字體,ARTICLE, HEADLINE, AUTHOR, PARA元素間空白有0.5em寬 在例四第一行,XML文件指明瞭它的stylesheet文件的類型與位置。這樣CSS結合到了XML源文件上。
但CSS與XSL相比,它有着一些不足。CSS適用於那些元素順序不變的文件。對於那些需要經常按不同元素排序的文件,我們還是要用XSL。
XSL是怎樣工作的呢?
XSL處理器把XML源文件通過XSL檢驗後產生一個HTML表現文件。這樣XML源文件就在網絡瀏覽器上有了表現。其實最終的目標並不只是產生HTML文件,而是可以各種各樣的文件,比如Txt, Rtf. XML源文件中也有類似例四中的一行,
比如是<?xml-stylesheet type="text/xsl" href="www.book.com/s1.xsl">用以指明瞭它的stylesheet文件的類型與位置。每一個XSL文件都包含了template rules(匹配模板規則)的集合。template rules包含有兩個部分:Patterns和Actions。
Patterns用以指出這個規則適用於那一個元素,Actions指出這個元素以及它的子元素要怎樣展現。這樣一來XML源文件中的結構樹就被轉換成了一個flow objects(流程產物)樹。
讓我們再來看一個例子吧。
例六:一段XSL代碼。
<?xml version="1.0">
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<BODY STYLE=" font-size:9.5pt;background-color:#FEEEEE">
<xsl:for-each select="portfolio/stock">
<DIV STYLE="background-color:teal; color:white; padding:4px">
<SPAN STYLE="font-weight:bold; color:white">
<xsl:value-of select="name"/></SPAN>
-<xsl:value-of select="price"/>
</DIV>
<DIV STYLE="margin-left:10px; margin-bottom:1em; font-size:9pt">
<xsl:value-of select="description"/>
<SPAN STYLE="font-style:italic">
(change:<xsl:value-of select="change"/>
</SPAN>
</DIV>
</xsl:for-each>
</BODY>
</HTML>
第二行是指明文件中標識的集合,又叫做Namespace(名域)。這可以使得同名標識不會衝突。
值得一體的是,文件中還用到了選擇語句(for-each select)在XML樹結構中進行選擇。
相信大家讀它不會遇到什麼困難。
 
 
發佈了26 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章