• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            流量統(tǒng)計(jì):
            Rixu Blog (日需博客)
            日需博客,每日必需來(lái)踩踩哦..
            posts - 108,comments - 54,trackbacks - 0

            XSL 指擴(kuò)展樣式表語(yǔ)言(EXtensible Stylesheet Language)

            萬(wàn)維網(wǎng)聯(lián)盟開(kāi)始發(fā)展 XSL 的起因是由于對(duì)基于 XML 的樣式表語(yǔ)言的需求。

            XSLT 指 XSL 轉(zhuǎn)換。XSLT 將 XML 文檔轉(zhuǎn)換為其他文檔,比如 XHTML

            概念不多講,這里附上W3C的網(wǎng)址 ,希望您一定要去看看!

            老規(guī)矩,先寫(xiě)出個(gè)能運(yùn)行的程序再說(shuō)。

            既然XSLT是將XML文檔轉(zhuǎn)換為其它文檔,那么我們就先建立一個(gè)XML文檔吧。(名為:HelloHtml.xml)

            <?xml version="1.0" encoding="utf-8" ?>
            <root>
            <greeting>Hello Angel</greeting>
            </root>

            同樣,還要再建立一個(gè)xslt文件,這里把它們放到同一個(gè)目錄下。(名為:HelloHtml.xslt)

            <?xml version="1.0" encoding="utf-8"?>
            <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:msxsl
            ="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
            <xsl:output method="html" indent="yes"/>
            <xsl:template match="root">
            <h1><xsl:value-of select="greeting"/></h1>
            </xsl:template>
            </xsl:stylesheet>

            想來(lái)xml文件應(yīng)該不用講解了,那就看看xslt文件吧:

            首先,它也是一個(gè)xml文檔,stylesheet節(jié)點(diǎn)標(biāo)記了此xsl樣式文件的版本,xmlns(xml命名空間)等信息。output標(biāo)記中method聲明以什么形式轉(zhuǎn)換文檔,當(dāng)然,它不僅僅能做html轉(zhuǎn)換,也可以做其它諸如xml,text,pdf等轉(zhuǎn)換。 ident聲明了是否要對(duì)輸出文檔作縮進(jìn)。

            template標(biāo)記聲明這是一個(gè)轉(zhuǎn)換模板,match標(biāo)記聲明了它將對(duì)哪個(gè)節(jié)點(diǎn)下的元素進(jìn)行匹配。

            value-of標(biāo)記是個(gè)取值指令,它將會(huì)把xml文檔中元素名為select中指定的元素的值取出來(lái)作為轉(zhuǎn)換后的數(shù)據(jù)。

            由此分析,經(jīng)轉(zhuǎn)換后輸出的html內(nèi)容應(yīng)該是:

            <h1>Hello Angel</h1>

            由于xslt為WEB標(biāo)準(zhǔn),并且被大多數(shù)主流瀏覽器所支持,所以?xún)H僅需要將xml文件與xslt文件都發(fā)送到客戶(hù)端,瀏覽器就會(huì)自動(dòng)將其轉(zhuǎn)換為XHTML文檔。

            接下來(lái)就是要給xml檔引入xslt樣式表了,這樣xslt才能對(duì)xml文檔進(jìn)行轉(zhuǎn)換,在xml文件的版本聲明后加上這樣一句:

            <?xml-stylesheet type="text/xsl" href="/HelloHtml.xslt"?>

            此時(shí)再瀏覽xml文件,就會(huì)看到瀏覽器不是僅僅顯示一個(gè)XML的文檔樹(shù)了(有些瀏覽器顯示純xml文檔是純文本格式的),而應(yīng)該是一個(gè)又大又粗的一號(hào)標(biāo)題文本:



            但它并不是一個(gè)標(biāo)準(zhǔn)的XHTML文檔,因?yàn)檗D(zhuǎn)換后生成的內(nèi)容僅僅是如下的:

            <h1>Hello Angel</h1>

            而一個(gè)標(biāo)準(zhǔn)的xhtml文檔至少應(yīng)該是下面:(當(dāng)然,這里是xhtml1.1版本的,DOCTYPE可能會(huì)有所不同)

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title></title>
            </head>
            <body>
            <h1>Hello Angel</h1>
            </body>
            </html>

            如何才能輸出這樣一個(gè)文檔呢?當(dāng)然,看了上面的例子后,你一定能把除了DOCTYPE之外的其它元素都完整地輸出,但關(guān)鍵就是要輸出DOCTYPE,因?yàn)槿绻粋€(gè)html/xhtml文檔如果沒(méi)有一個(gè)正確的doctype,將可能會(huì)觸發(fā)瀏覽器的怪異模式,這將有可能造成瀏覽器對(duì)內(nèi)容的顯示非常混亂,當(dāng)然,即使是小小的差異,只要是不可預(yù)料的也確實(shí)是件令人頭痛的事情!

            其實(shí)output指令還有兩個(gè)屬性,一個(gè)是doctype-public,一個(gè)是doctype-system。正好對(duì)應(yīng)html/xhtml DOCTYPE中的PUBLIC和后面的SYSTEM聲明。

            那么我們只用這樣寫(xiě),便可以輸出符合標(biāo)準(zhǔn)的html/xhtml文檔了:

            <?xml version="1.0" encoding="utf-8"?>
            <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:msxsl
            ="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
            <xsl:output method="html" indent="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN"
            doctype-system
            ="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
            <xsl:template match="root">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <title>Index</title>
            </head>
            <body>
            <h1>
            <xsl:value-of select="greeting"/>
            </h1>
            </body>
            </html>
            </xsl:template>
            </xsl:stylesheet>

            看似一切都搞定了,也沒(méi)有多少東西,但事實(shí)上并不是這樣的。因?yàn)榭赡芪覀兿胍旬a(chǎn)品列表放到一個(gè)文檔中,評(píng)論信息又放入一個(gè)文檔中,然后還要把它們合并成為一個(gè)文檔。大多數(shù)情況下我們是沒(méi)有一個(gè)現(xiàn)成的xml文檔的。那些東西也是要?jiǎng)討B(tài)生成的。我們還可能需要復(fù)雜的選擇運(yùn)算等等。。。

            還有就是,本來(lái)網(wǎng)站上使用了點(diǎn)ajax對(duì)SEO就有點(diǎn)不太友好了,再加入xml/xslt這東東,網(wǎng)站的SEO怎么顧全呢?

            下接著會(huì)看看多文檔合并的問(wèn)題,接著是解決SEO問(wèn)題。。。總之,會(huì)把如何使用xslt制作符合標(biāo)準(zhǔn)的網(wǎng)站告訴您。而且還要提前告訴您下,雖然接下來(lái)要在服務(wù)器端使用xslt,但我們已經(jīng)可以擺脫WebForm的page以提升性能,再加上所有跟數(shù)據(jù)、樣式、HTML相關(guān)的內(nèi)容都是純文本的,并沒(méi)有絲毫編譯到DLL中去,也將大大方便將來(lái)對(duì)網(wǎng)站的維護(hù)。


            Logo
            作者:Gezidan
            出處:http://www.rixu.net    
            本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

            本文轉(zhuǎn)載自 http://www.cnblogs.com/javennie/archive/2011/09/27/xsltgreeting.html
            posted on 2011-09-28 10:24 日需博客 閱讀(279) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C#技術(shù)文章轉(zhuǎn)載
            久久综合给合久久狠狠狠97色| 久久久精品免费国产四虎| 国产高潮国产高潮久久久91| 国产午夜福利精品久久| 亚洲国产成人久久综合碰| 亚洲愉拍99热成人精品热久久| 久久久久久国产精品免费无码| 亚洲嫩草影院久久精品| 亚洲精品蜜桃久久久久久| 91精品国产高清91久久久久久| 亚洲美日韩Av中文字幕无码久久久妻妇 | 久久国产成人| 亚洲午夜久久久影院伊人| 精品国产一区二区三区久久蜜臀| 久久久久人妻一区二区三区| 国产精品美女久久久久av爽 | 亚洲Av无码国产情品久久| 91精品国产综合久久精品| 欧美成人免费观看久久| 99久久免费国产精品| 国产产无码乱码精品久久鸭| 伊人久久大香线蕉av不变影院| 精品久久久久久国产免费了| 国产日产久久高清欧美一区| 久久人做人爽一区二区三区| 亚洲国产成人久久一区WWW| 88久久精品无码一区二区毛片| 久久精品天天中文字幕人妻| 国产成人无码精品久久久性色 | 精品乱码久久久久久夜夜嗨 | 久久久久久国产精品免费无码| 中文国产成人精品久久亚洲精品AⅤ无码精品| 久久久免费精品re6| 亚洲综合精品香蕉久久网| 99精品国产免费久久久久久下载| 久久九九久精品国产| 精品无码久久久久久久动漫| 精品免费久久久久国产一区| 国产精品免费久久久久电影网| 天天综合久久久网| 久久乐国产精品亚洲综合|