• <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)載
            av无码久久久久不卡免费网站 | 日本欧美久久久久免费播放网| 亚洲国产成人久久精品99| 日日狠狠久久偷偷色综合96蜜桃| 2021国内精品久久久久久影院| 国内精品伊人久久久久av一坑| 久久久受www免费人成| 99久久精品国产免看国产一区| 久久国产精品免费一区二区三区| 久久久SS麻豆欧美国产日韩| 94久久国产乱子伦精品免费 | 久久性生大片免费观看性| 久久精品一区二区三区中文字幕 | 亚洲乱亚洲乱淫久久| 久久久国产99久久国产一| 欧美综合天天夜夜久久| 亚洲午夜无码久久久久| 欧美精品福利视频一区二区三区久久久精品 | 久久久久综合中文字幕| 久久亚洲国产精品一区二区| 亚洲伊人久久精品影院| 中文字幕无码久久精品青草| 国产激情久久久久影院小草 | 久久精品国产亚洲精品| 青青草国产成人久久91网| 好久久免费视频高清| 久久精品国产久精国产思思| 综合人妻久久一区二区精品| 亚洲国产成人久久综合碰| 国产免费久久精品99re丫y| 久久精品国产72国产精福利| 久久婷婷五月综合色99啪ak| 精品熟女少妇aⅴ免费久久| jizzjizz国产精品久久| 品成人欧美大片久久国产欧美...| 国产精品毛片久久久久久久| 成人久久精品一区二区三区| 九九久久99综合一区二区| 久久久久久久综合日本亚洲| 精品综合久久久久久88小说| 亚洲人AV永久一区二区三区久久|