<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    騎士の圣殿

     

    什么是XSL

    XSL(EXtensible Stylesheet Language)它是指可擴展樣式表語言。 XSL之于 XML 就像 CSS 之于 HTML。說白了就是將XML中的數(shù)據(jù)用指定的顯示格式輸出.XML不像HTML,它不包含任何顯示格式的信息. XSL 包含兩個部分:
    • XSLT – 用于轉(zhuǎn)換 XML 文檔的語言. XSLT 是指 XSL 轉(zhuǎn)換 (XSL Transformation)
    • XPath – 用于在 XML 文檔中導(dǎo)航的語言

    XSL 語法

    任何 XSL 文檔的第一行實際上都是 XML 聲明:

    <?xml version="1.0" encoding="GB2312"?>

    XSL 與 XML ?遵循相同的語法規(guī)則
    在 XML 聲明之后,就是 XSL 聲明,例如:

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    ......
    </xsl:stylesheet>

    XSL聲明必須要有結(jié)束標(biāo)簽,上面的聲明中還包含命名空間和 XSL 規(guī)范的版本。

    什么是命名空間

    它指定一組可以在特定文檔中使用的元素名稱和屬性名稱。命名空間的作用是避免命名沖突。由于 XML 和其它與 XML 相關(guān)的語言都是用戶定義的,所以可能出現(xiàn)命名沖突。<table>可能是指一個布局或是一個座位。由于大多數(shù)應(yīng)用程序同時處理多個 XML 文檔,因此經(jīng)常會有不同 XML 文檔相混合的情況,而在這些文檔中某個元素可能代表不同的含義。幾個文檔使用相同的命名空間可以確保元素在每個文檔中代表相同含義。否則,就應(yīng)該使用不同的命名空間確保元素代表不同的含義。

    命名空間由文檔聲明中的 xmlns 屬性指定,實際上就是網(wǎng)站的地址(例如 http://www.w3.org/1999/XSL/Transform)。其基本原理是 URI 具有唯一性,因此相應(yīng)的命名空間也是唯一的。文檔聲明中的 URI 僅用作名稱。

    模板或規(guī)則
    XSL 文檔是由模板或規(guī)則構(gòu)成,每個模板定義應(yīng)用于特定 XML 節(jié)點的規(guī)則。XSL 模板如下所示:

    <xsl:template match="/">......</xsl:template>

    模板的作用是用來承載XML文檔中的數(shù)據(jù)的,就像一個模具,如果這個模具是方形的,那么用這個模具做出來的模型也一定是方形的,而XML文檔中的數(shù)據(jù)就是用來真充模具的原料。實際上在模板中可以嵌套子模板,但最上層模板必須將match設(shè)為"/"。
    happyold.xml

    <?xml version="1.0" encoding="GB2312"?>
    <俱樂部>
    <會員>    
    <姓名>cnbruce </姓名>
    <年齡>10 </年齡>
    <性別>男 </性別>
    <描述>他是一個糟糕的家伙!</描述>
    </會員>
    <會員>
    <姓名>yufuzi</姓名>
    <年齡>80 </年齡>
    <性別>男 </性別>
    <描述>他是一個優(yōu)秀的男人!</描述>
    </會員>
    <會員>
    <姓名>xiaojin</姓名>
    <年齡>20 </年齡>
    <性別>男 </性別>
    <描述>他人品有問題!</描述>
    </會員>
    </俱樂部>


    循環(huán)構(gòu)造

    <xsl:for-each select="...">......</xsl:for-each>

    與典型的 for 循環(huán)作用相同。
    old.xsl

    <?xml version="1.0" encoding="GB2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    <table border="1">
    <tr>
    <th>姓名</th>
    <th>年齡</th>
    <th>性別</th>
    <th>描述</th>
    </tr>
    <xsl:for-each select="俱樂部/會員">
    <tr>
    <!--表達式為何不需要包括父節(jié)點或從文檔根開始。這是因為這些元素的路徑是根據(jù) <xsl:for-each> 構(gòu)造中的 XPath 表達式來計算的-->
    <td><xsl:value-of select="姓名"/></td>
    <td><xsl:value-of select="年齡"/></td>
    <td><xsl:value-of select="性別"/></td>
    <td><xsl:value-of select="描述"/></td>
    </tr>
    </xsl:for-each>
    </table>
    </xsl:template>
    </xsl:stylesheet>

    將old.xsl與happyold.xml放到同一文件夾下,然后在happyold.xml第二行插隊入

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

    然后在瀏覽器中預(yù)覽一下顯示結(jié)果。

    使用循環(huán)構(gòu)造,還可以根據(jù)條件過濾輸出。假設(shè)只想顯示會員中年齡大于30的會員。
    old30.xsl

    <?xml version="1.0" encoding="GB2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    <table border="1">
    <tr>
    <th>姓名</th>
    <th>年齡</th>
    <th>性別</th>
    <th>描述</th>
    </tr>
    <xsl:for-each select="俱樂部/會員[年齡>30]">
    <tr>
    <td><xsl:value-of select="姓名"/></td>
    <td><xsl:value-of select="年齡"/></td>
    <td><xsl:value-of select="性別"/></td>
    <td><xsl:value-of select="描述"/></td>
    </tr>
    </xsl:for-each>
    </table>
    </xsl:template>
    </xsl:stylesheet>

    要定義 XML 節(jié)點的條件,可以使用下列任何運算符:

    等于 (=)
    不等于 (!=)
    小于 (<)
    小于或等于 (<=)
    大于 (>)
    大于或等于 (>=)


    使用<xsl:sort / >構(gòu)造使輸出的結(jié)果按指定的節(jié)點進行排序,<xsl:sort /> 元素必須嵌套在 <xsl:for-each > 元素中,以確保應(yīng)用程序可以循環(huán)通過所有的項目。sort 元素沒有相應(yīng)的結(jié)束標(biāo)簽,所以在其結(jié)尾加上"/"使其自結(jié)束。
    old_sort.xsl

    <?xml version="1.0" encoding="GB2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    <table border="1">
    <tr>
    <th>姓名</th>
    <th>年齡</th>
    <th>性別</th>
    <th>描述</th>
    </tr>
    <xsl:for-each select="俱樂部/會員">
    <xsl:sort select="年齡" order="descending"/>
    <tr>
    <td><xsl:value-of select="姓名"/></td>
    <td><xsl:value-of select="年齡"/></td>
    <td><xsl:value-of select="性別"/></td>
    <td><xsl:value-of select="描述"/></td>
    </tr>
    </xsl:for-each>
    </table>
    </xsl:template>
    </xsl:stylesheet>

    去掉order="descending"再看看顯示結(jié)果。

    條件構(gòu)造:

    <xsl:choose>
    <xsl:when test="表達式">

    </xsl:when>
    <xsl:otherwise>

    </xsl:otherwise>
    </xsl:choose>

    條件構(gòu)造中可以有多個when,但只能有一個otherwise,用于處理未包括在初始測試條件中的所有其它情況.
    old_choose.xsl

    <?xml version="1.0" encoding="GB2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
    <table border="1">
    <tr>
    <th>姓名</th>
    <th>年齡</th>
    <th>性別</th>
    <th>描述</th>
    </tr>
    <xsl:for-each select="俱樂部/會員">
    <xsl:choose>
    <xsl:when test="年齡 > 70">
    <tr bgcolor="#66CCFF">
    <td><xsl:value-of select="姓名"/></td>
    <td><xsl:value-of select="年齡"/></td>
    <td><xsl:value-of select="性別"/></td>
    <td><xsl:value-of select="描述"/></td>
    </tr>
    </xsl:when>
    <xsl:when test="年齡=10">
    <tr bgcolor="blue">
    <td><xsl:value-of select="姓名"/></td>
    <td><xsl:value-of select="年齡"/></td>
    <td><xsl:value-of select="性別"/></td>
    <td><xsl:value-of select="描述"/></td>
    </tr>
    </xsl:when>
    <xsl:otherwise>
    <tr bgcolor="red">
    <td><xsl:value-of select="姓名"/></td>
    <td><xsl:value-of select="年齡"/></td>
    <td><xsl:value-of select="性別"/></td>
    <td><xsl:value-of select="描述"/></td>
    </tr>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:for-each>
    </table>
    </xsl:template>
    </xsl:stylesheet>

    posted on 2007-11-19 10:23 最後の騎士 閱讀(217) 評論(0)  編輯  收藏 所屬分類: xml


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品亚洲专区无码唯爱网| 亚洲欧洲第一a在线观看| 亚洲国产中文在线二区三区免 | 中中文字幕亚洲无线码| 69xx免费观看视频| 亚洲成人动漫在线观看| 亚洲一区二区三区免费视频| 久久久久亚洲av无码专区喷水| 少妇人妻偷人精品免费视频 | 免费a级毛片视频| 男女啪啪免费体验区| 亚洲色偷拍区另类无码专区| 香蕉视频在线免费看| 久久99国产亚洲高清观看首页| 男人的天堂网免费网站| 亚洲视频国产精品| 国国内清清草原免费视频99| 亚洲一区二区三区在线观看网站| 免费无码看av的网站| 老司机午夜在线视频免费观| 亚洲男人第一无码aⅴ网站| 中文字幕乱理片免费完整的| 亚洲AV无码久久精品色欲| 日韩免费视频在线观看| 日韩在线视精品在亚洲| 亚洲线精品一区二区三区影音先锋| 最近中文字幕大全免费版在线| 亚洲欧洲中文日产| 国产免费小视频在线观看| 中文字幕免费在线看| 亚洲美女视频网站| 四虎影视精品永久免费| 成人电影在线免费观看| 亚洲一区欧洲一区| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲中文字幕人成乱码| 国产精品免费视频一区| 一区二区三区无码视频免费福利 | 日产乱码一卡二卡三免费| 中文字幕无码免费久久9一区9| 亚洲熟妇av一区二区三区下载|