前段時(shí)間無意間看到一個(gè)博客的RSS可以用XSL格式輸出并且能在Firefox里瀏覽,想到自己以前寫的一個(gè)XML留言簿因?yàn)椴患嫒軫irefox所不了了之了,現(xiàn)在看到他的能在Firefox瀏覽就覺得很好奇,看了一下代碼,一句一句的比對,最后終于找到了原因,也就把這個(gè)留言簿給完成了。因?yàn)槭且粋(gè)簡單的XML留言簿,所以取名SXGB(Simple XML GuestBook)。
留言本演示,管理密碼為test:http://home.goofar.com/hotheart/gbook/gbook.asp
首先定義留言簿的XML文檔的格式。作為一個(gè)留言簿,不需要太復(fù)雜的內(nèi)容,于是我就給留言內(nèi)容分為3個(gè)部分:留言者姓名、留言者主頁和留言內(nèi)容。另外,一個(gè)留言簿還需要有使用者的一些信息,包括用戶名和用戶主頁。再有,在留言比較多時(shí)還需要分頁信息。大致結(jié)構(gòu)完成后就可以開始寫XML文檔模板了。
XML文檔根元素定義為gbook XML文檔模板gbook.xml
CODE: xml version="1.0" encoding="utf-8"?> <!-- DTD file --> <!DOCTYPE gbook SYSTEM "sxgb.dtd"> <!-- XSL file --> <?xml-stylesheet type="text/xsl" href="gbook.xsl"?> <gbook> <!-- 留言簿相關(guān)信息 --> <info> <!-- 用戶名 --> <user>HotHeart</user> <!-- 用戶主頁 --> <home>http://www.xujiwei.cn</home> <!-- 分頁信息,分別為目前所在頁,總頁數(shù),上一頁,下一頁 --> <pagenow>1</pagenow> <pagetotal>1</pagetotal> <pageprev>1</pageprev> <pagenext>2</pagenext> <!-- 是否已經(jīng)登陸,用來處理是否顯示登陸框 --> <logined>NO</logined> </info> <!-- 留言列表 --> <messages> <!-- 一個(gè)留言 --> <message> <!-- 留言ID --> <id>1</id> <!-- 留言者姓名 --> <username>Admin</username> <!-- 留言時(shí)間 --> <time>2005-08-09 12:00</time> <!-- 留言者主頁 --> <homepage>http://www.xujiwei.cn/</homepage> <!-- 留言內(nèi)容 --> <content><![CDATA[ 留言內(nèi)容 ]]></content> </message> </messages> </gbook>
要注意在引用XSL時(shí)不能用 <?xml:stylesheet type="text/xsl" href="gbook.xsl"?> xml和stylesheet之間應(yīng)該用一杠(-)而不能用冒號(:),在Firefox里是不支持用冒號的。
一個(gè)好的XML文檔,除了要有結(jié)構(gòu)性,還應(yīng)該要有有效性,所以在XML文檔的一開頭就定義了文檔類型定義(DTD) sxgb.dtd,下面就來把這個(gè)文檔類型定義給完成。因?yàn)橐呀?jīng)設(shè)計(jì)好留言簿XML文檔的結(jié)構(gòu),所以寫出DTD是很方便的。
文檔類型定義sxgb.dtd
CODE: <?xml version="1.0" encoding="utf-8"?> <!ELEMENT gbook (info,messages)> <!ELEMENT info (user,home,msgtotal,pagenow,pagetotal,pageprev,pagenext,logined)> <!ELEMENT messages (message+)> <!ELEMENT message (id,username,time,homepage,content)> <!ELEMENT user (#PCDATA)> <!ELEMENT home (#PCDATA)> <!ELEMENT msgtotal (#PCDATA)> <!ELEMENT pagenow (#PCDATA)> <!ELEMENT pagetotal (#PCDATA)> <!ELEMENT pageprev (#PCDATA)> <!ELEMENT pagenext (#PCDATA)> <!ELEMENT logined (#PCDATA)> <!ELEMENT id (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT username (#PCDATA)> <!ELEMENT time (#PCDATA)> <!ELEMENT homepage (#PCDATA)> <!ELEMENT content (#PCDATA)>
<!ELEMENT messages (message+)>中+號表示留言列表中至少有一條留言,但實(shí)際應(yīng)用可能會出現(xiàn)沒有留言的情況,為了應(yīng)對這種情況,我在輸出XML文檔的ASP程序輸出一條系統(tǒng)產(chǎn)生的留言,提示目前還沒有留言。
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 下一頁 XML+XSL+CSS+ASP打造留言簿 [2]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|