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

            Michael's Space

            Technology changes the world, serves the people.
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            XSLT淺談

            Posted on 2006-09-24 16:02 奔跑的阿甘 閱讀(636) 評論(0)  編輯 收藏 引用 所屬分類: XML/Data Service

            XSLT淺談
            Michael 2006/09/24

            在"XML淺談"一章,曾提到XML文檔的內容可由XSLT經過轉化處理后呈現給用戶,今天我們著重討論如何做到這點。
            掌握XSLT需要牢記以下三條法則:
            1.XSLT本身就是XML文檔
            2.XSLT轉化后需要顯示的內容由用戶決定
            3.XSLT轉化的內容如何顯示由用戶決定

            一 XSLT本身就是XML文檔

            這意味著,編寫XSL文件和編寫一份普通的XML文檔沒什么區別。它需要有且僅有一個根結點,它的每個元素需要前后對稱,等等。這些XML
            文檔的編寫規范就是XSL的編寫規范。
            XSL文檔的根節點是<xsl:stylesheet>,一般地,所有XSL文檔的根結點描述為:
            <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
            注意:用來定義xsl名字空間的URI地址是大小寫相關的。
            以下為本章示例XML文檔book.xml:
            <?xml version="1.0"?>
            <?xml:stylesheet type="text/xsl" href="book.xsl"?>
            <source>
            <book id="001">
            ???? <price>USD100</price>
            ???? <page>1000</page>
            ???? <book id ="002">partII</book>
            </book>
            </source>

            二 XSLT轉化后需要顯示的內容由用戶決定

            XSLT是面向規則或者面向模板(TEMPLATE-ORIENTED)的語言,它定義一系列的針對源XML文檔節點的規則,用于替換指定的XML文檔節點
            ,最終生成的文檔就是用戶希望看到的內容。
            所以,通過編寫適用于特定節點的規則,這些節點就根據規則定義的格式呈現出來。
            如果用戶不希望看到某部分內容,只要不對這些內容節點制定規則,它們就不被顯示。
            在XSLT中,<xsl:template>元素用于制定一個規則,這條規則可適用于XML樹的某個節點也可適用于多個節點,它可由元素的"match"屬
            性指定。
            這種T-O方法允許用戶自行定義靈活的表單生成各式各樣的效果。
            例如:
            <xsl:template match="/">
            ???? <xsl:apply-templates select="http://book"/>
            </xsl:template>

            上述規則的含義是:
            1)經過該XSL轉化后的文檔僅包含book元素
            2)該book元素可以是任一節點的book元素

            三 XSLT轉化的內容如何顯示由用戶決定

            如何顯示指定節點,也就是如何制定規則(TEMPLATE)的過程。
            規則的內容就是如何定義樣式,它可以是HTML的元素,或者XSLT本身定義的元素(如<xsl:value-of>,<xsl:text>等)。
            例如:
            <xsl:template match="book">
            ???? <h3 style="color:blue">
            ????????? <xsl:value-of select="name()"/>
            ????????? <xsl:text> (id=</xsl:text>
            ????????? <xsl:value-of select="@id"/>
            ????????? <xsl:text>)</xsl:text>
            ???? </h3>
            </xsl:template>

            上述規則的含義是:
            1)這條規則對XML樹的book節點進行轉換
            2)轉換后的內容顯示如下(藍色3號大小):
            book (id=001)
            book (id=002)

            XSLT中對同一個XML節點可以定義多條規則(由mode屬性或者按優先級選擇等),同時,一條規則可以適用于多個XML節點(設置"match" 屬性時采用"|"運算符連接多個節點等)。

            最后,對于XML分析器轉換XML文檔時的過程簡單總結一條:
            分析器從根節點開始遍歷XML文檔,對每個節點,從XSL文檔中尋找規則,若找到則進行節點轉換,否則繼續遍歷,直到整顆樹遍歷完畢為止。在進行父節點轉換時,如果XSL也定義了該父節點的某個子節點的規則,則需要檢查是否有<xsl:apply-templates>元素,若沒有則整個父節點(包括所有子節點)都將被父節點的規則替換,若有,則需要對該元素指定的子節點或者對所有子節點采用各自的規則進行替換。

            【完】

            国产精品久久婷婷六月丁香| 97久久精品国产精品青草| 99久久精品国产高清一区二区 | 狠狠色丁香久久综合五月| 久久久久99精品成人片欧美| 国产精品久久久久久久久免费| 国产999精品久久久久久| 久久综合久久鬼色| 亚洲国产成人精品91久久久| 国产精品亚洲综合久久 | 91精品国产乱码久久久久久| 国内精品久久九九国产精品| 久久精品国产一区二区三区不卡 | 国产精品久久网| 一本一道久久a久久精品综合| 久久不见久久见免费视频7| 色综合合久久天天给综看| 91精品国产乱码久久久久久| 久久免费看黄a级毛片| 热99re久久国超精品首页| 久久精品成人欧美大片| 久久91这里精品国产2020| 99久久精品无码一区二区毛片| 久久成人小视频| 国内精品久久久久久麻豆 | 97精品伊人久久久大香线蕉| 三级片免费观看久久| 国内精品久久久久影院免费| 97精品依人久久久大香线蕉97| 久久亚洲欧洲国产综合| 99久久精品国产一区二区三区 | 久久久久九九精品影院| 青青青伊人色综合久久| 国产综合久久久久久鬼色| 亚洲精品乱码久久久久久自慰 | 久久亚洲AV成人无码电影| 无码国内精品久久人妻蜜桃 | 国产精品一区二区久久精品无码 | 色综合久久综精品| 久久九九亚洲精品| 99久久国产综合精品成人影院|