• <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)載
            久久久不卡国产精品一区二区| 伊人久久综合精品无码AV专区| 久久综合丝袜日本网| 国产一级做a爰片久久毛片| 久久免费线看线看| 久久99久久无码毛片一区二区| 久久久91人妻无码精品蜜桃HD| 人妻无码精品久久亚瑟影视 | 中文字幕乱码久久午夜| 精品无码久久久久久尤物| 精品熟女少妇aⅴ免费久久| 国产成人精品综合久久久久| 色综合久久天天综合| 狠狠色丁香婷婷久久综合| 久久99精品综合国产首页| 久久大香萑太香蕉av| 情人伊人久久综合亚洲| 日本强好片久久久久久AAA| 久久精品国产一区二区| 久久99精品久久久久久久不卡 | 一级女性全黄久久生活片免费 | 久久狠狠爱亚洲综合影院| 亚洲午夜久久影院| 久久综合给合久久狠狠狠97色 | 国内精品久久久久| 精品国产青草久久久久福利| 91久久精品国产免费直播| 欧美熟妇另类久久久久久不卡| 久久精品国产亚洲Aⅴ蜜臀色欲| 国产综合久久久久| 亚洲精品无码久久一线| 久久亚洲国产最新网站| 激情综合色综合久久综合| 久久99国产精品二区不卡| 久久久一本精品99久久精品66 | 韩国三级中文字幕hd久久精品| 国产精品99久久久久久人| 1000部精品久久久久久久久| 久久亚洲精品国产精品| 亚洲av日韩精品久久久久久a| 97精品依人久久久大香线蕉97|