校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > XML+XSL+CSS+ASP打造留言簿

XML+XSL+CSS+ASP打造留言簿

熱門標(biāo)簽:電話機器人銷售公司嗎 客服外呼系統(tǒng)呼叫中心 成都銷售外呼系統(tǒng)公司 土地證宗地圖標(biāo)注符號 保定電銷機器人軟件 vue 地圖標(biāo)注拖拽 自動外呼系統(tǒng)怎么防止封卡 電話機器人案例 鎮(zhèn)江云外呼系統(tǒng)怎么樣

前段時間無意間看到一個博客的RSS可以用XSL格式輸出并且能在Firefox里瀏覽,想到自己以前寫的一個XML留言簿因為不兼容Firefox所不了了之了,現(xiàn)在看到他的能在Firefox瀏覽就覺得很好奇,看了一下代碼,一句一句的比對,最后終于找到了原因,也就把這個留言簿給完成了。因為是一個簡單的XML留言簿,所以取名SXGB(Simple XML GuestBook)。

留言本演示,管理密碼為test:http://home.goofar.com/hotheart/gbook/gbook.asp

首先定義留言簿的XML文檔的格式。作為一個留言簿,不需要太復(fù)雜的內(nèi)容,于是我就給留言內(nèi)容分為3個部分:留言者姓名、留言者主頁和留言內(nèi)容。另外,一個留言簿還需要有使用者的一些信息,包括用戶名和用戶主頁。再有,在留言比較多時還需要分頁信息。大致結(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>
!-- 一個留言 -->
message>
!-- 留言ID -->
id>1/id>
!-- 留言者姓名 -->
username>Admin/username>
!-- 留言時間 -->
time>2005-08-09 12:00/time>
!-- 留言者主頁 -->
homepage>http://www.xujiwei.cn//homepage>
!-- 留言內(nèi)容 -->
content>![CDATA[ 留言內(nèi)容 ]]>/content>
/message>
/messages>
/gbook>

要注意在引用XSL時不能用
?xml:stylesheet type="text/xsl" href="gbook.xsl"?>
xml和stylesheet之間應(yīng)該用一杠(-)而不能用冒號(:),在Firefox里是不支持用冒號的。

一個好的XML文檔,除了要有結(jié)構(gòu)性,還應(yīng)該要有有效性,所以在XML文檔的一開頭就定義了文檔類型定義(DTD) sxgb.dtd,下面就來把這個文檔類型定義給完成。因為已經(jīng)設(shè)計好留言簿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+)>中+號表示留言列表中至少有一條留言,但實際應(yīng)用可能會出現(xiàn)沒有留言的情況,為了應(yīng)對這種情況,我在輸出XML文檔的ASP程序輸出一條系統(tǒng)產(chǎn)生的留言,提示目前還沒有留言。

接下來是很重要的部分,XSL的編寫了。

XSL文檔gbook.xsl
點擊這里查看XSL文檔gbook.xsl

在定義XSL名稱空間時,應(yīng)該用http://www.w3.org/1999/XSL/Transform,即

CODE:
xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

而不能用http://www.w3.org/TR/WD-xsl,不知為什么如果使用這個名稱空間,在Firefox會顯示錯誤:分析 XSLT 樣式表單失敗。

在XSL里,一個很重要的概念就是模板。一個模板就對應(yīng)一塊內(nèi)容的格式化輸出,在構(gòu)建模板時,可以從大到小,即先構(gòu)建全局的模板,然后再處理每一塊細分的內(nèi)容,也可以從小到大,先構(gòu)建好細分內(nèi)容的模板,然后將它們組合起來形成整體的模板。在XSL里,創(chuàng)建一個模板使用下面的標(biāo)記:
[code[xsl:template match="/gbook">
!-- 模板內(nèi)容 -->
/xsl:template>[/code]
其中match表示的是這個模板對應(yīng)那個標(biāo)記。

使用模板有兩種方法:

第一種是直接應(yīng)用:

CODE:
xsl:apply-templates select="info"/>

這種方法是選擇當(dāng)前標(biāo)記下的info標(biāo)記并使用match為info的模板進行處理

第二種是循環(huán)選擇:

CODE:
xsl:for-each select="message">
!-- 模板內(nèi)容 -->
/xsl:for-eace>

在循環(huán)選擇中,模板直接寫在for-each之中,但是當(dāng)前上下文已經(jīng)轉(zhuǎn)到message。

至于在select中使用的表達式,屬于XPath部分,可以參考W3C的XPath文檔(XML Path Language) 。在gbook.xsl中還使用到的標(biāo)記有:

xsl:value-of select="content"/>
這是在XSL中常用的標(biāo)記之一,輸出結(jié)果是選擇節(jié)點的值,通過用它來輸出節(jié)點的值,在這個留言本中,它用來輸出用戶名、留言者姓名、留言內(nèi)容等。

xsl:attribute name="href">gbook.asp?page=1/xsl:attribute>
用來給當(dāng)前標(biāo)簽添加一個屬性,在留言簿中用來給分頁導(dǎo)航添加網(wǎng)址。其中name]屬性表示要添加屬性的名字,標(biāo)記包含的內(nèi)容為要添加屬性的值。

xsl:if test="id!=''">!-- 處理內(nèi)容 -->/xsl:if>
判斷test中的表達示結(jié)果,如果為真則處理包含的內(nèi)容,假則忽略。要注意是,如果是判斷小于,就不能用“”,而應(yīng)該用“l(fā)t;”,因為“”是標(biāo)簽起始標(biāo)志,如果不進行轉(zhuǎn)換則在瀏覽器中會出現(xiàn)錯誤。

然后就是ASP輸出留言簿需要的XML文檔了,這個只要按照前面定義的格式,從數(shù)據(jù)庫中讀取記錄按照模板輸出即可,不過需要在輸出之前定義MIME類型:
Response.ContentType="application/xml"
指明這是一個XML文檔。另外,因為整個留言簿都使用的UTF-8編碼,需要在ASP中指定編碼:
CodePage="65001"
這句應(yīng)該放在ASP文件的開頭。

最后還有CSS,這個屬于定義留言簿的顯示效果了,具體可以查看CSS的內(nèi)容。另外,為了防止用戶誤操作提交了空表單,我在客戶端加了一段JS代碼來檢查留言姓名和留言內(nèi)容是否為空,如果為空則提示用戶并停止提交表單,具體內(nèi)容可以查看JS腳本文件。

完整留言簿系統(tǒng)SXGB打包下載

參考資料:
1. XML及WAP開發(fā)手冊(李建國等編著)
2. xml ,xsl,css 之亂搞

標(biāo)簽:天津 懷化 麗江 重慶 成都 臺灣 公主嶺 內(nèi)江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《XML+XSL+CSS+ASP打造留言簿》,本文關(guān)鍵詞  XML+XSL+CSS+ASP,打造,留言簿,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《XML+XSL+CSS+ASP打造留言簿》相關(guān)的同類信息!
  • 本頁收集關(guān)于XML+XSL+CSS+ASP打造留言簿的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产欧美精品一区二区色综合| 日本免费新一区视频| 色婷婷狠狠综合| 亚洲成人在线免费| 日韩久久精品一区| 国产精品综合一区二区三区| 国产精品三级在线观看| 色综合激情五月| 日本在线不卡一区| 久久夜色精品国产噜噜av| 成人av午夜电影| 一区二区国产盗摄色噜噜| 91麻豆精品国产自产在线观看一区| 美日韩一级片在线观看| 欧美国产欧美综合| 在线视频亚洲一区| 理论片日本一区| 亚洲国产成人一区二区三区| 在线一区二区观看| 蜜臀av在线播放一区二区三区| 国产亚洲午夜高清国产拍精品 | 91精品1区2区| 日韩精品高清不卡| 久久精品亚洲精品国产欧美kt∨| 色伊人久久综合中文字幕| 蜜臀a∨国产成人精品| 国产欧美精品一区aⅴ影院| 91黄色激情网站| 国产综合色视频| 亚洲精品国产成人久久av盗摄| 91精品福利在线一区二区三区| 国产成人在线电影| 婷婷久久综合九色综合绿巨人| 久久久美女毛片| 欧美午夜片在线看| 国产一区二区三区四| 亚洲国产中文字幕在线视频综合| 2023国产精品自拍| 欧美性色黄大片| 成人午夜精品一区二区三区| 午夜精品一区在线观看| 国产精品免费人成网站| 91麻豆精品国产91久久久久久| 成人性生交大片免费看中文 | 欧美日韩专区在线| 国产九色精品成人porny| 亚洲国产成人av好男人在线观看| 久久精子c满五个校花| 欧美男男青年gay1069videost| 成人午夜短视频| 免费成人在线播放| 亚洲欧美国产77777| 2欧美一区二区三区在线观看视频| 色诱亚洲精品久久久久久| 国产又黄又大久久| 亚洲成人在线免费| 亚洲品质自拍视频| 国产欧美综合在线| 日韩精品中文字幕在线不卡尤物 | 久久成人久久爱| 一区二区三区四区乱视频| 久久久久久久综合色一本| 欧美日韩视频在线观看一区二区三区 | 欧美日韩高清一区二区| 99re66热这里只有精品3直播 | 成人精品免费视频| 麻豆freexxxx性91精品| 亚洲综合在线视频| 国产精品美女久久久久aⅴ| 欧美成人免费网站| 欧美一区三区四区| 欧美天堂一区二区三区| 99久久久国产精品免费蜜臀| 国产高清在线精品| 久久 天天综合| 日产国产高清一区二区三区| 国产电影精品久久禁18| 久久精品国产99久久6| 天天av天天翘天天综合网| 亚洲激情图片qvod| 中文乱码免费一区二区| 久久中文字幕电影| 日韩精品中文字幕一区二区三区 | 日韩国产高清影视| 亚洲自拍与偷拍| 亚洲激情自拍视频| 亚洲欧美国产高清| 亚洲少妇屁股交4| 中文字幕在线不卡| 国产精品久久久久毛片软件| 久久嫩草精品久久久精品| 精品国产网站在线观看| 欧美一区二区三区思思人| 欧美无乱码久久久免费午夜一区| 色吊一区二区三区| 日本道色综合久久| 97精品电影院| 日本丰满少妇一区二区三区| 97aⅴ精品视频一二三区| www.亚洲免费av| eeuss鲁一区二区三区| 99久久精品免费精品国产| 成人国产一区二区三区精品| 成人开心网精品视频| 99热精品一区二区| 91在线视频网址| 色88888久久久久久影院野外| 色综合久久久久网| 欧美影视一区在线| 欧美日韩视频专区在线播放| 欧美精品日韩综合在线| 91麻豆精品国产自产在线| 日韩免费观看高清完整版| 欧美本精品男人aⅴ天堂| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品资源网| 国产成人综合亚洲网站| 成人性生交大合| 99久久国产免费看| 在线视频综合导航| 538在线一区二区精品国产| 日韩视频永久免费| 欧美va亚洲va| 国产欧美一区二区精品婷婷| 国产精品美女久久久久高潮| 亚洲精品一二三区| 午夜免费欧美电影| 久久精品免费看| 国产黄色精品网站| 色综合久久综合| 在线播放中文字幕一区| 日韩欧美不卡一区| 国产欧美视频一区二区| 亚洲女爱视频在线| 天天综合日日夜夜精品| 国精产品一区一区三区mba桃花| 成人免费视频播放| 在线视频国内自拍亚洲视频| 91精品国产一区二区| 久久综合狠狠综合久久激情| 国产精品乱码人人做人人爱| 亚洲精品精品亚洲| 日韩高清一区二区| 激情成人午夜视频| 99精品久久免费看蜜臀剧情介绍| 精品1区2区3区| 精品国产乱码久久久久久牛牛 | 欧美日韩一区在线| 日韩亚洲欧美在线| 中文字幕不卡三区| 亚洲国产视频在线| 激情综合网激情| 色综合欧美在线| 日韩视频免费观看高清完整版 | 亚洲免费观看高清完整版在线| 五月婷婷欧美视频| 国产精品99久久不卡二区| 91国产精品成人| 久久看人人爽人人| 一区二区三区资源| 美女视频黄免费的久久 | 亚洲日本青草视频在线怡红院| 日韩黄色在线观看| 成人精品免费看| 欧美一区二区三区播放老司机| 国产精品视频yy9299一区| 日韩高清在线电影| 91在线免费播放| 精品免费日韩av| 亚洲一区二区三区四区中文字幕| 精品亚洲成a人| 色屁屁一区二区| 久久天天做天天爱综合色| 夜夜嗨av一区二区三区中文字幕 | 久久精品国产网站| 91视频国产资源| 精品美女在线播放| 亚洲在线观看免费| 国产成人在线免费观看| 91精品国产色综合久久不卡蜜臀 | 午夜久久福利影院| 成人99免费视频| 欧美电视剧免费全集观看| 一区二区在线观看av| 激情综合五月天| 欧美喷水一区二区| 综合av第一页| 国产黄色精品视频| 日韩免费高清av| 亚洲1区2区3区4区| 色综合中文字幕国产| 精品av久久707| 丝袜美腿亚洲一区| 色综合久久中文综合久久牛| 国产色一区二区| 捆绑紧缚一区二区三区视频| 欧美日韩黄色影视| 一区二区三区四区在线| av中文字幕不卡| 国产欧美日韩在线|