国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > XML > 正文

XML加ASP實現網頁“本地化”

2024-09-05 20:55:11
字體:
來源:轉載
供稿:網友
想讓你的站點能被來自多個國家的沖浪者看明白嗎?無疑,這就需要提供多個語言版本的頁面內容,也就是所謂的
“本地化”功能。最容易想到的方法就是分別編寫多種語言的頁面內容,然后放置到不同的目錄下,再在首頁上添加導航
到各自語言位置的鏈接。很明顯,這樣的處理方式將浪費許多包含公共元素以及設計框架的空間,而且修改、維護也很煩
瑣。有什么好方法嗎?當然,本文就介紹如何結合使用XML與ASP技術實現這個目的。?
本文將討論如下幾個方面的內容:創建包含語言資源的XML文檔、使用ASP創建Web頁面模板、使用XPath語法和MSXML3
分析器定位XML文檔中的目標內容以及動態地在HTML流中插入語言字符串。?
準備條件?
本文討論的技術涉及到以下方面:IIS4?或者?PWS(包含ASP功能),MSXML?版本?3。?
功能展示?
本文要討論的例程是一個簡單的HTML表單,用以提交名字和地址信息。下面是在Netscape?Navigator中顯示西班牙語
言的圖示:
采用本文論述的技術,你就可以非常簡單地通過更新一個XML文件實現為站點添加多種語言的功能。?
創建包含語言資源的XML文檔?
首先,使用喜愛的頁面編輯器創建一個叫做xmltrans.asp的Web頁面文件。我發現使用靜態占位符文字(比如"First?
name?")設計頁面最容易。當XML準備好后,就可以使用變量替換這些靜態文字。要下載例程文件請點擊這里。?
完成基本頁面的功能設計后,開始創建一個包含語言字符串的良好格式XML文檔。在這里,我使用純文本編輯器
Notepad編寫初始的XML語言集-英語版本。Notepad使我感覺更接近于源代碼。XML文件命名為xmltrans.xml。下面列出了
包含English、French和Spanish字符串的XML文件代碼內容:?
?
?
??
?Localize?ASP?with?XML?
?First?name?
?Last?name?
?
Prefix?
?Suffix?
?Address?
?Address?2?
?Address?3?
?City?
?State/Province?
?Postal?code?
?Area?code?
?Telephone?number?
?OK?
?en?
?Windows-1252?
?English?
??
??
?Localize?ASP?with?XML?-?French?
?Prénom?
?Nom?
?
Préfixe?(M.,?Mme,?Mlle)?
?Suffixe/Titre?
?Rue?
??
??
?Ville?
?Région/Province?
?Code?postal?
?Indicatif?régional?
?Numéro?de?téléphone?
?OK?
?fr?
?Windows-1252?
?French?
??
??
?Localize?ASP?with?XML?-?Spanish?
?Nombre?
?Apellido?paterno?
?
Prefijo?(Sr.,?Sra.,?Srta.)?
?Sufijo?o?título?
?Línea?1?de?dirección?
??
??
?Ciudad?
?Región,?estado?o?provincia?
?Código?postal?
?Código?de?área?
?Número?de?teléfono??
?OK?
?sp?
?iso-8859-1?
?Spanish?
??
?
xmltrans.xml文件的第一行是XML聲明。其中的version屬性告訴讀者文檔符合XML?1.0的標準,encoding屬性指示解析
器使用壓縮版本的Unicode:?
?
一個XML文檔需要一個包含其他元素的根元素。因為這里的例程是包含一些語言,所以就命名根元素為languages:?
?
作為集合類型,languages元素包含了一個或多個language元素:?
?
以上language標記包含4個屬性。xml:lang屬性是其中最重要的,在ASP程序中將通過這個屬性值的2字母語言代碼搜索
字符串組。其他的屬性,比如charset,可以為將來的功能擴充而用。?
每種語言節點中,我都添加了一個元素作為變量,其中含有顯示在HTML頁面上的文字。XML允許使用有含義的名字作為
自定義標記,比如,我使用元素包含HTML頁面的標題。同樣,<firstname>元素包含字符串"First?name"。? <br><title>Localize?ASP?with?XML?
First?name?
最后,良好格式的XML文檔包含了一整套對應于HTML頁面的字符串。下圖顯示了XML文件中的標記和English語言字符
串。注意,現在這里只討論English版本,以后可以添加更多種語言。?

ASP文件代碼分析?
現在回來看看ASP文件xmltrans.asp。在其中我們使用XML路徑語言(XPath),它可以在微軟的XML解析器(MSXML)中
執行。你可以認為XPath是抵達XML文檔一部分內容預定位置的工具,這有些類似于在命令行中輸入一個路徑以執行文件,
比如c:/winnt/notepad.exe,或者在瀏覽器中敲入了一個URL訪問頁面。下面研究這個ASP文件看看如何取回English語言字
符串。首先,我們實例化一個叫做MSXML2.DOMDocument的XML解析器工作對象:?
set?doc=server._?
CreateObject?_?
("MSXML2.DOMDocument")?
由于ASP程序不能象Win32程序一樣處理事件,所以在這里我們關閉了異步操作選項。這樣就確保了在轉向其他任務
前,腳本程序會一直等待當前事件的完成:?
doc.async?=?False?
接著使用DOMDocument對象的Load方法裝載包含字符串的XML文檔。如果轉載過程中發生了錯誤,就發出警告信息并停
止運行:?
if?not?doc.Load(server._?
mappath("xmltrans.xml"))?then?
?msg="Failed?to?load?"?
?msg=msg?&?"the?XML?file"?
?Response.Write?msg?
?Response.End?
end?if?
我們可以使用兩種方法查詢XML文檔:XSL和XPath。在這里讓解析器使用后者,傳遞屬性名字和正確數值給
setProperty方法:?
doc.setProperty?_?
?"SelectionLanguage",?"XPath"?
然后,創建選擇XML文檔部分內容的路徑。很明顯,相關字符串位于languages元素的某個位置內,因此languages成為
路徑的最開始部分。同時我們知道字符串是被包含在一個language元素內的,但是是哪一個呢?請別忘記在前面的XML文檔
中,我們嵌入了一個叫做xml:lang的屬性,并給出了一個唯一數值“en”。這就是我們要選擇的,下面是操作它的語法:?
sel="/languages/language"?
sel=sel?&?"[@xml:lang='en']"?
這有些不好理解,但你可以將這段XPath代碼想像為一個SQL語句,類似于取回一個記錄集的命令:?
SELECT?*?FROM?languages.language?WHERE?xml:lang='en'?
回到現實的XPath查詢,要使用下面的代碼返回包含第一個匹配節點的節點對象:?
set?selectednode?=?_?
?doc.selectSingleNode(sel)?
最后一步是傳遞元素名字("title")給selectSingleNode方法,并要求它取回"title"節點的text屬性值。就是說,取
得包含在的文字。在這里,取回的文字是"Localize?ASP?with?XML":?
txt=selectednode._?
selectSingleNode("title").text?
與SQL命令對照,就象從ADO記錄集內部取回一個字段值,語句是:?
txt=rs("title")?
在ASP頁面中插入語言字符串?
知道了如何從XML元素中選取文字并賦值給變量,就可以將變量值插入到HTML流中了。為了使代碼簡潔,創建一個叫做
getstring()的函數,如下:?
function?getstring(instring)?
temp=selectednode._?
selectSingleNode?_?
(instring).text?
getstring=?_?
server.htmlencode(temp)?
end?function?
getstring()函數的輸入值是元素名,元素值要從XML文檔中取回。比如,將"firstname"傳遞給getstring(),
getstring函數就選擇firstname元素并返回它的文本數值。為保險起見,在返回給調用者前,我們使用ASP的
server.htmlencode方法轉換文本為合法的HTML代碼。在ASP頁面中,調用代碼類似如下:?
?
:?
?
如果選擇了XML文檔的English部分,HTML輸出結果如下:?
First?name:v/td>?
如果選擇了French,HTML輸出結果如下:?
Prénom:?
下圖顯示了French語言版本的表單:?

選擇可用語言?
XML的一大優勢就是它是以清晰的文本格式保存,我們能夠在任何時候更新Web服務器上的XML文件。而且,我們還可以
將English版本的xmltrans.xml文件在XML編輯器XML?NotHPad中打開,復制一份,然后將其中文字翻譯為一種新語言。下圖
顯示了XML?Notepad中的例程文件:?

上圖中,在左邊可以執行添加、刪除以及選擇元素和屬性的操作,在右邊可以編輯相關內容。當站點需要多種語言版
本時,只需要在內容中執行粘貼操作,然后上載最新的XML文檔就可以了。?
為了使添加的語言立即生效,要增加一個程序,用它判斷文件中不同語言的種類數量,并返回語言代碼和語言名稱。
如下面的代碼段所示,我們可以將數據格式化處理以創建一個HTML列表框。當用戶提交表單時,2字母表示的語言種類代碼
被存儲到ASP會話變量choselang中。?
?
添加提示信息以及字符集數據?
上面使用XML提供了HTML表單的可變語言文字顯示,接著還要考慮一些更豐富的用途。比如說,要在選擇語言時添加一
個提示信息,只需要在文字前后嵌入HTML標記
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线国产三级| 91在线网址| 亚洲伊人网在线观看| 五月婷婷丁香激情| 国产一区二区在线|播放| 国产精品久久久久久精| 91精品国产高久久久久久五月天| 精品国产丝袜高跟鞋| 国产导航在线| 欧美日韩在线资源| 国产日产一区二区三区| 香蕉视频免费在线播放| 国产尤物一区二区三区| 国产天堂av| av超碰在线| xxxxx中文字幕| 国产鲁鲁视频在线观看免费| 国产二区在线播放| 亚洲欧美国产另类首页| 福利在线国产| 亚洲男人的天堂成人| 黄色三级视频在线观看| 国产不卡在线| 国产你懂的在线观看| 国产一二在线观看| 超碰人人在线| 亚洲第一成年免费网站| 国产三区四区在线观看| 欧美精品一区二区三区免费| 国产精品国产国产aⅴ| 亚洲天堂影院在线观看| 国产黄色在线看| 国产亚洲精品拍拍拍拍拍| 六月天色婷婷| 青青草免费观看免费视频在线| 国产高清在线看| 国产激情视频在线| 国产亚洲精品久久久久久移动网络| 欧美性xxxx交| www中文字幕在线观看| 夜色资源网av在先锋网站观看| 国产黄在线观看免费观看不卡| 国产美女性感在线观看懂色av| 国产超碰在线观看| 91在线网站| 91在线网址| 亚洲精品一区中文字幕电影| 亚洲综合色视频在线观看| 精品伦理一区二区| 伊人福利在线| 欧美日韩在线视频免费观看| 激情网站在线| 国产专区在线播放| 1区2区3区在线| 国产变态拳头交视频一区二区| 国产不卡一卡2卡三卡4卡5卡在线| 国产高清在线观看| 99爱在线观看| а√最新版地址在线天堂| 九九精品视频在线观看九九| 欧美在线中文| 国产午夜电影| 羞羞视频在线观看免费| 任你操在线观看| 国产一二三区在线视频| av一级在线| 午夜免费视频在线国产| 在线色视频网| 狠狠干天天干| 在线中文字幕资源| 国产免费黄网站| 在线免费看av| 国产一卡2卡3卡免费网站| 精品三级久久久久久久电影聊斋| 日本在线天堂| 国产久草在线| 日本一本久久| 国产网红在线| 天天插天天操| 国产高清在线视频| 九九精品九九| 亚洲成人在线播放| 国产娇喘精品一区二区三区图片| 天天操夜夜做| 精品国产一区二区三区不卡在线 | av人人综合网| 国产男女无套在线播放| 午夜影院在线免费观看| 国产精品99999| 成人免费一区二区三区牛牛| eeuss影影院www在线播放| 国产经典av| 国产黄在线观看免费观看不卡| 国产在线一区二区视频| sese一区| 日本高清不卡中文字幕 | 日本最新在线视频| h网址在线观看| 亚洲国产精华液| 亚洲社区在线| 四虎成人精品在永久在线观看| 99re6在线视频精品免费| 国产超碰在线观看| 99热国产在线| аⅴ成人天堂中文在线| 欧美日韩一区二区三区视视频| 日本福利在线| 开心激情五月婷婷| 国产主播福利在线| 国产一级激情| 最近久乱中文字幕| 国产麻豆综合视频在线观看| 日本中文字幕在线播放| 国产亚av手机在线观看| 国产youjizz在线| 豆国产97在线|亚洲| 国产卡一卡二卡三| 国产成人午夜精品| 精品av中文字幕在线毛片| 69久久精品| 人人九九精品| 国产嫩草在线视频| 国产精品18久久久久网站| 国产极品视频| jizz在线免费观看| 九色在线网站| 中文字幕2019第三页| 国产精品四虎| 九九热视频免费在线观看| 国产视频一二区| 亚洲男人的天堂成人| 国产中文第一页| 国产黄色高清在线| 麻豆精品视频入口| 国产精品bbw一区二区三区| 99re6在线视频精品免费| 国内外激情在线| 在线中文字幕资源| 国产网站免费观看| 欧美性xxxx交| 午夜国产在线| 人人九九精品| 中文av资源在线| 国产无遮挡又黄又爽免费网站| 一本大道久久精品| 天天操夜夜操天天射| 操人视频91| 任你操视频在线观看| 国产xxxx做受性欧美88| 黄色毛片在线看| eeuss影院在线观看| 精品av中文字幕在线毛片| 尤物视频在线看| 高清在线观看av| 久草亚洲一区| 国产成免费视频| 国产区成人精品视频| 最近中文字幕mv免费高清视频8| 超碰国产在线| 免费av在线| 激情五月色综合亚洲小说| 欧美在线中文| 成人亚洲一区二区三区| 欧美性猛交p30| 热99re久久精品精品免费| 天天艹天天操| av片在线观看| 青青草在线免费观看| www.成人.com| 国产在线超碰| 牛牛热在线视频| 国产在线高清| 国产成人精品男人的天堂538| 国产高清av| 亚洲成人电视网| 国产在线中文字幕| 国产视频一二三区| 97国产在线| 激情六月婷婷| 国产爆初菊在线观看免费视频网站| 国产福利图片| 日韩黄色成人| 国产深夜福利| 尤物视频在线观看视频| 免费看的毛片| 国产麻豆精品高清在线播放| 国产小视频在线高清播放| 一个人看的www免费观看视频| 人成在线免费视频| 国产一级黄色片免费| 天天操夜夜做| 国产高清在线视频| 噜噜噜噜噜在线视频| 精品a在线观看| 国产在线高潮| 青青草原国产在线| 精品美女调教视频| 国产精品久久久久久福利| 欧美卡一卡二| 在线免费看黄|