Category Archives: Network

Network

xplant 與 CoralCDN

xplanet 和 Coral CDN 這篇提到的問題:

所以我就寫信去給 xplanet 的作者,跟他提了一下或許可以加一個類似 http://xplanet.sourceforge.net.nyud.net:8090/clouds_2048.jpg 之類的,不過他說如果這樣的話,使用者一定會把 “.nyud.net:8090/” 拿掉然後直接連,這樣問題又回到原點 (之前就是因為這個檔吃掉太多 sourceforge 的頻寬才會被警告然後被迫找一堆人來 hosting 的)

CoralCDN 上面有提供 Apache mod_rewrite tutorial,我相信這才是 ijliao 需要的:(強制過 CoralCDN)

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} !^CoralWebPrx
RewriteRule ^/images/foo(.*)$ http://foo.bar.nyud.net:8090/images/foo$1.html [R,L]

原因是過 CoralCDN 後 User-Agent 會被換成 /^CoralWebPrx/ (Regular Expression),所以可以用此判斷。

好用的 XSLT

XSLT 其實蠻簡單的,而且 IE6 與 Firefox 支援的都蠻完整的,只是不太清楚為什麼一直沒有起來?

W3SchoolsXSLT Tutorial,直接以大量的範例講解,看完以後再回去看 W3C 的文件就不需要把時間花在理解句子與單字了。(也就是把 W3C 的文件當工具書來查而已)

XSLT 是 XSL Transformations 的縮寫,1.0 版最後定案是 1999/11/16,是一項非常久的技術了。在 W3SchoolsXSLT Browsers 提到 IE6、Netscape 7 都有很不錯的支援:

Internet Explorer 6 fully supports the official W3C XSLT Recommendation.

Netscape 7 supports the official W3C XSLT Recommendation.

你可以把 XSLT 當作 client side 的 template engine,也就是 browser 幫你 template。

但請不要認為他「只是」一個 client side template engine,事實上他可以有很多奇奇怪怪的應用,只要 browser 有支援都可以玩…

Anyway,既然是 template engine,那麼就會把 template 與 data 分開放。下面就是一個例子,我以 ‘[‘ 及 ‘]’ 取代 ‘<‘ 及 ‘>’,因為要打 &lt; 及 &gt; 很麻煩。

這是 acg.xml,放 data 的:(至於例子,就不要太講究了)

[?xml version="1.0" encoding="UTF-8"?]
[?xml-stylesheet type="text/xsl" href="acg.xsl"?]

[acg]
        [item]
                [title]男女蹺蹺板[/title]
                [author]津田雅美[/author]
        [/item]

        [item]
                [title]騙錢蹺蹺板[/title]
                [author]庵野秀明[/author]
                [author]津田雅美[/author]
        [/item]
[/acg]

其中的 [?xml-stylesheet type=”text/xsl” href=”acg.xsl”?] 就是跟 browser 講要用哪個 stylesheet 去表現這些資料,這邊選的是 acg.xsl:

[?xml version="1.0" encoding="UTF-8"?]
[xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"]

[xsl:template match="/acg"]

[html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-TW" lang="zh-TW"]

[body]
        [table border="1"]
                [tr]
                        [th]Title[/th][th]Author[/th]
                [/tr]
                [xsl:for-each select="item"]
                [tr]
                        [td][xsl:value-of select="title" /][/td]
                        [td][xsl:for-each select="author"][div][xsl:value-of select="." /][/div][/xsl:for-each][/td]
                [/tr]
                [/xsl:for-each]
        [/table]
[/body]

[/html]

[/xsl:template]

[/xsl:stylesheet]

產生出來的樣式可以看 http://netnews.nctu.edu.tw/~gslin/acg.xml,可以用 IE 與 Firefox 測看看 :P