前段时间无意间看到一个博客的RSS可以用XSL格式输出并且能在Firefox里浏览,想到自己以前写的一个XML留言簿因为不兼容Firefox所不了了之了,现在看到他的能在Firefox浏览就觉得很好奇,看了一下代码,一句一句的比对,最后终于找到了原因,也就把这个留言簿给完成了。因为是一个简单的XML留言簿,所以取名SXGB(Simple XML GuestBook)。
留言本演示,管理密码为test:http://home.goofar.com/hotheart/gbook/gbook.asp
首先定义留言簿的XML文档的格式。作为一个留言簿,不需要太复杂的内容,于是我就给留言内容分为3个部分:留言者姓名、留言者主页和留言内容。另外,一个留言簿还需要有使用者的一些信息,包括用户名和用户主页。再有,在留言比较多时还需要分页信息。大致结构完成后就可以开始写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> <!-- 留言簿相关信息 --> <info> <!-- 用户名 --> <user>HotHeart</user> <!-- 用户主页 --> <home>http://www.xujiwei.cn</home> <!-- 分页信息,分别为目前所在页,总页数,上一页,下一页 --> <pagenow>1</pagenow> <pagetotal>1</pagetotal> <pageprev>1</pageprev> <pagenext>2</pagenext> <!-- 是否已经登陆,用来处理是否显示登陆框 --> <logined>NO</logined> </info> <!-- 留言列表 --> <messages> <!-- 一个留言 --> <message> <!-- 留言ID --> <id>1</id> <!-- 留言者姓名 --> <username>Admin</username> <!-- 留言时间 --> <time>2005-08-09 12:00</time> <!-- 留言者主页 --> <homepage>http://www.xujiwei.cn/</homepage> <!-- 留言内容 --> <content><![CDATA[ 留言内容 ]]></content> </message> </messages> </gbook>
要注意在引用XSL时不能用 <?xml:stylesheet type="text/xsl" href="gbook.xsl"?> xml和stylesheet之间应该用一杠(-)而不能用冒号(:),在Firefox里是不支持用冒号的。
一个好的XML文档,除了要有结构性,还应该要有有效性,所以在XML文档的一开头就定义了文档类型定义(DTD) sxgb.dtd,下面就来把这个文档类型定义给完成。因为已经设计好留言簿XML文档的结构,所以写出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+)>中+号表示留言列表中至少有一条留言,但实际应用可能会出现没有留言的情况,为了应对这种情况,我在输出XML文档的ASP程序输出一条系统产生的留言,提示目前还没有留言。
出处:蓝色理想
责任编辑:moby
上一页 下一页 XML+XSL+CSS+ASP打造留言簿 [2]
◎进入论坛网络编程版块参加讨论
|