DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> gentoo.org 重新設計,第 2 部分: 一個重生的站點
gentoo.org 重新設計,第 2 部分: 一個重生的站點
編輯:XML詳解     

如果您已經閱讀了我撰寫的“gentoo.org 重新設計”系列的 第一部分,那麼您就知道我是 Gentoo Linux 的首席設計師,我要對 Gentoo Linux 網站負責。目前,這個站點還有許多不足。是的,它確實看似漂亮,但除了漂亮的圖形之外,您會發現它實際上並沒有滿足主要目標觀眾 ― Gentoo Linux 開發人員、用戶和潛在用戶 ― 的需要。

  上一次,我使用了以用戶為中心的設計方法來為站點創建了一組優先級,然後使用這些優先級為重建 gentoo.org 創建行動計劃。有兩件事位於優先級列表的頂部:新的開發人員文檔和用於向開發人員傳達對 CVS 資源庫所作更改的新郵件列表。雖然添加新的 CVS 郵件列表相對容易(可是,您會看到,它比我想象更困難),但新的開發人員文檔卻需要很多規劃和工作。

  我不僅需要創建一些實際文檔(我長期以來一直忽略的任務),還必須選擇新的主要文檔要使用的正式 XML 語法。您知道,在幾周之前,我還在創建 原始 HTML格式的文檔。這的確是件麻煩事,因為如果這樣做,那麼內容(實際信息)將和顯示(與顯示相關的 HTML 標記)混合在一起。結果如何呢?一團糟,就是那樣。編輯實際文檔很困難,而改進整個站點的 Html 尤其困難。

  在本文中,我將自豪地演示這個站點新的靈活的 XML 文檔解決方案。但首先,我將簡要重述將 CVS 日志郵件列表添加到站點的經驗。

  添加 CVS 日志郵件列表

  CVS 日志郵件列表的目的是通知開發人員:已經對 CVS 資源庫做了新的提交。由於我已經安裝了郵差郵件列表管理器,我認為創建這個新列表很容易。首先,我將只創建郵件列表,然後將正確的“hook”添加到 CVS 資源庫,這樣就會自動生成並發送出電子郵件,這些電子郵件描述了對源碼的更改。

 我首先開始研究資源庫的 CVSROOT 中一個名為“loginfo”的特殊文件。理論上,通過修改這個文件,我可以指示 CVS 在對資源庫執行任何提交(因此也做了修改)時執行一個腳本。因此,我創建了一個特殊 loginfo 腳本,並將它插入現有資源庫。每當對源碼進行修改時,它確實會向新的“gentoo-cvs”郵件列表發送電子郵件。

  遺憾的是,這個解決方案並不完全如我所願。首先,它生成了許多電子郵件消息 ― 每個被修改的文件都有一條消息 ― 其次,這些消息含義不清,有時甚至是空的!我迅速除去了 loginfo 腳本,並中斷了 gentoo-cvs 郵件列表項目。很明顯,CVS 的 loginfo hook 不適合我的需要,我費了很大勁來搜尋可以幫助我解決問題的任何與 loginfo 相關的文檔。

  cvs2cl.pl

  幾周之後,我開始尋找 loginfo 的替代物。這次,我做了一件聰明事,找到了 freshmeat.Net。在那裡,我很快找到了自己要尋找的東西:來自 red-bean.com 的絕佳的 cvs2cl.pl perl 腳本。 cvs2cl.pl 使用“cvs log”命令來直接連接到資源庫並抽取適當的相關日志信息,而不是使用 loginfo hook。此外,它並不生成相對含糊的 CVS 日志消息,而是將所有東西都重新格式化成可讀的“更改日志(ChangeLog)”格式(請參閱 清單 1):

清單 1:cvs2cl.pl 生成的輸出

2001-04-09 20:58 drobbins 
  * app-doc/gentoo-web/files/xml/dev.XML: new fixes 
2001-04-09 20:47 drobbins 
  * app-doc/gentoo-web/: gentoo-web-1.0.ebuild, 
  files/pyhtml/index.pyHtml, files/xml/gentoo-howto.XML: new 
  gentoo-howto fixes 
2001-04-09 20:03 drobbins 
  * app-doc/gentoo-web/files/xml/dev.XML: typo fix 
2001-04-09 20:02 drobbins 
  * app-doc/gentoo-web/files/pyhtml/index.pyHtml: little update 

還可以指示 cvs2cl.pl 生成 XML 格式的輸出,在下一篇文章中,我會利用這種技術將最新的“更改日志”結合到站點中新的開發人員部分。

  cvslog.sh 腳本

  以下是我現在用於生成日常“更改日志”電子郵件的腳本。首先,它將當前工作目錄更改成已檢出 CVS 資源庫的位置。然後,它創建 $yesterday 和 $today 環境變量,它們包含了相應的 RFC 822 格式的日期。請注意:這兩個日期變量都將時間設置成“00:00”或午夜。然後,使用這些變量創建 $cvsdate 變量,並將其傳送給 cvs2cl.pl 以指定我感興趣的日期范圍 ― 從昨天午夜到今天午夜的時間跨度。這樣, $cvsdate 變量就包含了一個日期規范,它通知 cvs2cl.pl 只對昨天的更改做日志,而不對其它更改做日志。

  此外,我還創建了 $nicedate 變量(在郵件主題行中使用),並使用 mutt 郵件程序(以 mailx 兼容模式)將電子郵件發送到 gentoo-cvs 郵件列表(請參閱 清單 2):

清單 2: cvslog.sh

#!/bin/bash 
cd /usr/portage 
cvs -q update -dP 
yesterday=`date -d "1 day ago 00:00" -R` 
today=`date -d "00:00" -R` 
cvsdate=-d\'${yesterday}\<${today}\' 
nicedate=`date -d yesterday +"%d %b %Y %Z (%z)"` 
/home/drobbins/gentoo/cvs2cl.pl -f /home/drobbins/gentoo/cvslog.txt -l "${cvsdate}" 
mutt -x gentoo-cvs -s "cvs log for $nicedate" <\ 
/home/drobbins/gentoo/cvslog.txt 

  通過使用 cron,我在每晚午夜時運行這個腳本。多虧有 cvs2cl.pl ,我的開發人員現在可以得到准確且可讀的每日的 CVS 更新。


文檔項目

  現在,討論 Gentoo Linux 文檔項目。新的文檔系統涉及兩組人或目標觀眾:文檔 創建人和文檔 讀者。創建人需要不給創建帶來妨礙的精心設計的 XML 語法;而根本不關心 XML 的讀者想要生成的 Html 文檔既具功能性又具觀賞性。實現的難點是如何創建一個滿足這兩種觀眾需要的完整系統。哦,我假設還有第三種“觀眾” ― 我,Web 管理員和設計新系統的人。由於我打算在站點升級時與新的文檔系統交互,因此我需要它可靠且靈活。

  Web 就緒的 Html

  首先,讓我們討論一下將根據我的主 XML 文件生成的 Web 就緒的 HTML。要生成好的、可讀的文檔,我需要正確的 XML 標記的支持。例如,必須要有將注釋、重要消息和警告插入文檔主體(而且使它們在結果 Html 中突出顯示)的能力。此外,我必須可以插入幾塊代碼,如果實際用戶輸入可以以某種方式由程序輸出得到補償,那就太棒了。我甚至可以添加以備用顏色突出顯示源代碼注釋的標記,這樣代碼塊就更易讀了。

  文檔頂部應該有目錄表(帶有到相應章的超鏈接)、摘要、修訂日期、版本和作者清單。當然,每個文檔在其頁面的最上部應該有一個頁眉,該頁眉包含了一個小的 Gentoo Linux 徽標。單擊此徽標應該將您帶到 Gentoo Linux 主頁面。最後但很重要的一點是,每個文檔都應該有一個頁腳,它包含了版權信息和聯系電子郵件地址。

  漂亮的新徽標

  有大量要求需要滿足,而我決定首先將精力集中在最有趣的部分,即出現在每個 Gentoo Linux 文檔左上角的新 Gentoo Linux 徽標。我使用主頁面上“gentoo”圖形(使用優秀且免費的 Blender 3D 程序創建的)中的“g”作為新的小徽標的基礎圖形。我略微調整了一下擠壓設置,並添加了鍍鉻環境映射。最後,我安置了燈光和照相機,新的徽標就完成了。在將它導入 Xara X並添加了一些文本之後,就得到了以下結果:

新的 Gentoo Linux 徽標 
gentoo.org 重新設計,第 2 部分: 一個重生的站點

  我使用這個新徽標作為 HTML 顏色方案的其余部分的靈感,因此全部都使用略帶紫色的主題。我大量使用級聯樣式表(CSS)來控制字體屬性和間隔。一旦我有了象樣的 HTML 原型,我開始將精力集中到新文檔的內部 ― 新的 XML 語法。我想要語法盡可能簡單,因此我只創建了恰好足夠多的 XML 標記,以允許正確組織文檔,但沒有多余標記。然後,我開始使用 XSLT 將 XML 轉換成目標 Html。

  結果!

  在許多次調整和從我的一個開發人員處獲取大量反饋意見之後,新的文檔系統達到了可以使用的地步。我立即開始了我們第一部新的開發指南“The Gentoo Linux Documentation Guide”的工作,它包含了新 XML 格式的完整描述。這不僅允許其他開發人員開始使用新樣式的文檔,而且它是實際使用中的新文檔系統的優秀示例。請務必閱讀了該指南,並且完全理解新的 XML 語法。以下是新文檔引擎的其它組件:

  gentoo-doc.css 樣式表― 指定支持 CSS 的浏覽器的字體、顏色和樣式信息。

  guide.xsl XSLT 轉換― 用於將 guide XML 轉換成 Web 就緒 Html 的規則。

  以上文檔的主 XML 版本。

  DocBook 和 Guide

  如果您正在致力於自己的文檔解決方案,那麼您也許還應該考慮 DocBook XML 和 SGML 格式。DocBook 十分適合大型文檔和書籍項目,它非常靈活,而且有許多(也許太多)功能。此外,有許多現有軟件包可用於將 DocBook XML/SGML 轉換成幫助頁面、texinfo 文件、PostScript、PDF,當然,還有 Html 格式。

我 沒有選擇 DocBook,因為輕量級 XML 語法最適合 Gentoo 的需要。目前,我們的 XML guide 語法有大約 20 個標記和大約 10 個屬性。有限的標記集合使 guide XML 易於轉換成其它格式,如 Html,而且還確保了在整個文檔集中保持一定程度的一致性,因為格式是如此簡單。由於已經有了自己的 XML 格式,我可以根據需要用新的標記擴展格式。我喜歡那個程度的控制。我將 XML 看作是一種人們應該用於以 他們認為最實用的方法來構造數據的技術。換句話說,定義自己的元素和屬性的能力是很寶貴的,我應該充分利用它。畢竟,它是 XML 的定義功能。

  當然,創建自己的 XML 語法並不總是最佳解決方案,尤其是當 數據互換對於您非常重要時。在所有的 XML 宣傳中,有一件事通常會被忽略,那就是 不同 XML 格式之間的轉換極其困難。在許多情況下,兩種格式不會 100% 兼容,而您將不得不違心地選擇棄用數據和/或元數據,從而避免使用某些元素或屬性,或者創建一種“超級格式”,它將容納這兩種 XML 格式的數據和元數據。在文檔世界中,DocBook 是作為“超級格式”的理想選擇,因為它非常靈活;它可以輕易地容納從各種源碼導入的文檔。

  但是,DocBook 的豐富性和靈活性也可能造成問題。例如,也許會有幾百個您可能永遠不需要的標記,而在 XSLT 中支持所有這些標記可能會使轉換成其它格式變得更困難。因此,雖然 DocBook 對於轉換 自其它格式的文檔來說是一個非常好的容器,但您自己的最簡單 XML 語法卻幾乎始終更易於轉換 成其它格式。

  最重要的事就是在牢記目標觀眾的需要的同時,認真評估所有潛在的解決方案。

  結束語

  創建好新的文檔系統之後,我將所有文檔都轉換成新的格式,並將新文檔張貼到現有站點上。此外,我還創建了到 gentoo-cvs 郵件列表訂閱頁面的鏈接。這裡的關鍵是我將這些功能都集成到 現有站點,因此用戶可以立即從這些改進中受益。



XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved