• <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 奔跑的阿甘 閱讀(632) 評論(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>元素,若沒有則整個父節點(包括所有子節點)都將被父節點的規則替換,若有,則需要對該元素指定的子節點或者對所有子節點采用各自的規則進行替換。

            【完】

            亚洲精品午夜国产VA久久成人| www.久久精品| 久久夜色精品国产亚洲| 久久99国产精品久久99| 青青草原综合久久大伊人精品| 亚洲国产成人久久精品影视| 中文精品99久久国产| 99精品国产99久久久久久97 | 久久99精品国产麻豆宅宅| 久久天天躁狠狠躁夜夜avapp| av色综合久久天堂av色综合在 | segui久久国产精品| 亚洲综合久久久| 久久精品国产亚洲av日韩| 久久久WWW成人| 日韩人妻无码精品久久免费一| 久久久久亚洲爆乳少妇无| 99久久精品国产麻豆| 合区精品久久久中文字幕一区| 大香网伊人久久综合网2020| 婷婷国产天堂久久综合五月| 久久国产精品99精品国产987| 怡红院日本一道日本久久 | 久久se精品一区二区影院| 亚洲精品tv久久久久久久久| 日本精品久久久中文字幕| 精品伊人久久大线蕉色首页| 91久久香蕉国产熟女线看| 久久精品亚洲一区二区三区浴池| 精品久久久久久无码中文野结衣| 97精品久久天干天天天按摩| 一本综合久久国产二区| 久久国产综合精品五月天| 91精品国产91久久久久久蜜臀 | 久久99热只有频精品8| 午夜人妻久久久久久久久| 久久男人中文字幕资源站| 国产精品久久久久久久久免费| 久久久综合香蕉尹人综合网| 久久久久无码精品国产| 久久天天躁狠狠躁夜夜2020一|