• <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 (日需博客)
            日需博客,每日必需來踩踩哦..
            posts - 108,comments - 54,trackbacks - 0

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

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

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

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

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

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

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

            同樣,還要再建立一個xslt文件,這里把它們放到同一個目錄下。(名為: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>

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

            首先,它也是一個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聲明了是否要對輸出文檔作縮進(jìn)。

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

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

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

            <h1>Hello Angel</h1>

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

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

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

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



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

            <h1>Hello Angel</h1>

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

            <!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>

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

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

            那么我們只用這樣寫,便可以輸出符合標(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>

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

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

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


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

            本文轉(zhuǎn)載自 http://www.cnblogs.com/javennie/archive/2011/09/27/xsltgreeting.html
            posted on 2011-09-28 10:24 日需博客 閱讀(297) 評論(0)  編輯 收藏 引用 所屬分類: C#技術(shù)文章轉(zhuǎn)載
            中文国产成人精品久久不卡| 青青青国产精品国产精品久久久久| 国产女人aaa级久久久级| 天天综合久久久网| 国产精品99久久久精品无码| 久久精品国产亚洲av日韩| 狠狠综合久久综合中文88| 久久精品国产亚洲αv忘忧草| 99久久国产热无码精品免费| 久久噜噜久久久精品66| 久久免费的精品国产V∧| 久久强奷乱码老熟女网站| 国产精品18久久久久久vr | 久久精品国产一区| 欧美亚洲国产精品久久久久| 大美女久久久久久j久久| 亚洲AV日韩精品久久久久久| 久久久WWW成人| 中文字幕亚洲综合久久菠萝蜜| 久久精品国产亚洲AV麻豆网站| 热RE99久久精品国产66热| 久久久久夜夜夜精品国产| 久久亚洲AV成人无码国产| 久久久久久午夜精品| 久久综合精品国产一区二区三区| 久久精品国产亚洲77777| 一本久久a久久精品vr综合| 国产精品熟女福利久久AV| 久久精品九九亚洲精品天堂| 99久久精品日本一区二区免费| 久久99久久99精品免视看动漫| 一本色道久久99一综合| 亚洲AV无码久久| 久久综合久久自在自线精品自| 亚洲欧洲日产国码无码久久99| 久久亚洲精品成人无码网站 | 国内精品九九久久精品| 中文字幕精品无码久久久久久3D日动漫 | 99久久国产宗和精品1上映 | 久久精品国产亚洲AV无码偷窥| AV无码久久久久不卡网站下载|