婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用XSLT將XML數據轉換成HTML

使用XSLT將XML數據轉換成HTML

熱門標簽:如何修改多個百度地圖標注 東營電銷 本地電話機器人 隨州外呼調研系統 高德地圖地圖標注服務中心 400電話辦理包年 r語言數據可視化地圖標注 微信地圖標注合并了 南寧網絡外呼系統運營商

使用一個簡單的 XSL 樣式表就可以將 XML 數據轉換成 HTML。隨著 XML 規范的不斷演進,在新的版本中滿足每個人的需要似乎已經成為必要;不幸的是,進行簡單的轉換一直都困擾著規范。

假設我有一個表示一個頁面內容的 XML 數據,現在我想將其內容轉換成布局。下面是我想要轉換的 XML:

?xml version='1.0'?>
?xml-stylesheet type="text/xsl" href="article.xsl"?>
xml>
    folders>
        folder>
            text>Folder 1/text>
            files>
                file>
                    text>File 1/text>
                    fields>
                        field>
                            data>
                                type>string/type>
                                length>50/length>
                                value>some data/value>
                            /data>
                        /field>
                    /fields>
                /file>
            /files>
        /folder>
    /folders>
/xml>

這個內容表示一組文件夾、文件和域。每個文件夾包含文件,每個文件包含用于輸入數據的域。文件夾組中的每個文件夾都將表現為一個 TABLE 的第一行的一個 TR 元素和一個 TD 元素。文件組中的每個文件都將表示為嵌套在文件夾 TR 元素中的一個 TABLE 元素的第一行的一個 TR 元素和一個 TD 元素。域組中的每個域都將在相關的文件中表現為一個 INPUT。

為了實現這一想法,我們需要將遍歷 XML 然后根據XSL 構建一個表。

下面是用于這個轉換的 XSL:

?xml version="1.0"?>
xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:fn="http://www.mycompany.com/mynamespace">
xsl:output method="html"/>

msxsl:script language="JScript" implements-prefix="fn">
    function getElementCount(nodelist, what) {
        var rtrn = 0;
        rtrn = nodelist[0].parentNode.selectNodes(what).length;
        return (rtrn + 1); //1 is added for filler TD
    }
/msxsl:script>

xsl:template match="/">

TABLE CELLSPACING="0" CELLPADDING="0"
    WIDTH="100%" BORDER="0" ID="tblRoot" NAME="tblRoot"
    style="table-layout:fixed;">
    TR>
        xsl:for-each select="xml/folders/folder">
        xsl:element name="TD">
            xsl:attribute name="style">width:55px/xsl:attribute>
            xsl:value-of select="text"/>
        /xsl:element>
        /xsl:for-each>
        TD> /TD>
    /TR>

    xsl:for-each select="xml/folders/folder">
    TR>
        xsl:element name="TD">
            xsl:attribute name="colspan">
                xsl:value-of select="fn:getElementCount(., 'folder')"/>
            /xsl:attribute>

            TABLE CELLSPACING="0" CELLPADDING="0"
                WIDTH="100%" BORDER="0" style="table-layout:fixed;">
                TR>
                    xsl:for-each select="files/file">
                    xsl:element name="TD">
                        xsl:attribute name="style">width:55px;/xsl:attribute>
                        xsl:value-of select="text"/>
                    /xsl:element>
                    /xsl:for-each>
                    TD> /TD>
                /TR>

                xsl:for-each select="files/file">
                    TR>
                        xsl:element name="TD">
                            xsl:attribute name="colspan">
                                xsl:value-of select="fn:getElementCount(., 'file')"/>
                            /xsl:attribute>

                        xsl:for-each select="fields/field">
                        xsl:element name="INPUT">
                            xsl:attribute name="type">text/xsl:attribute>
                            xsl:attribute name="maxlength">
                                xsl:value-of select="data/length"/>
                            /xsl:attribute>
                            xsl:attribute name="value">
                                xsl:value-of select="data/value"/>
                            /xsl:attribute>
                        /xsl:element>BR/>
                        /xsl:for-each>

                        /xsl:element>
                    /TR>
                /xsl:for-each>
            /TABLE>
        /xsl:element>
    /TR>
    /xsl:for-each>
/TABLE>

/xsl:template>
/xsl:stylesheet>
在 stylesheet 標記中,我們設置了幾個命名空間,包括定義所有 xsl 轉換標記的 xsl 命名空間。能夠讓我們創建可以在樣式表中使用的用戶函數的msxml 命名空間。我使用它得到所有的子元素,以便得到一個 TD 標記的一個 COLSPAN 屬性集。用于加入一組用戶定義的函數的fn 命名空間,該命名空間由msxml:script element 創建。

 
然后,我們創建外部 TABLE 和第一個 TR。在 TR 中,我為 XML 中指定的每個文件夾創建一個 TD。我使用了 xsl:element 標記,因為它允許我添加自定義屬性或者執行一個函數來為另一個 TD 元素中的 COLSPAN 屬性設置一個屬性。

在為每個文件夾創建了所需的 TD 之后,我開始為每個文件夾創建 TR。我只向這個 TR 添加一個 TD,但是我將它的 COLSPAN 屬性設為等于文件夾組中文件夾標記的數量再加一。多出的一是用來在一個固定布局樣式的 TABLE 中填充空格用的。

為了得到 COLSPAN,我傳入當前的上下文(在這里由“.”指定)和我想計算的節點的名字。在我的函數中,我得到當前的上下文,paraentNode,和 XPath 查詢中指定的節點的數量。然后函數返回這個數量加上一以填充 TD。

有了這個 TD,我在其中嵌入另外一個 TABLE,該 TABLE 包含文件組中的每個文件。從這一點開始,其過程就與外部 TABLE 轉換一樣。最后的步驟是添加每個文件中的域。這次我沒有再創建嵌入的 TABLE,只是把這些域添加到當前的 TD 中。

一旦我完成了通用布局,我就可以開始添加用戶界面功能了,比如說隱藏掉其它的文件夾和文件行,直到用戶點擊了相關的選項卡。這一功能可以通過編寫支持這一功能的腳本來實現,添加一個 onclick xsl:attribute 元素到文件夾和文件 TD 元素,然后將它的值設置為腳本函數的名字。

最后,在通用功能完成之后,你可以添加class xsl:attributes 并在 STYLE 或 CSS 中添加相關的classNames 得到你想要的外觀。

這個例子為在部署 Web 數據解決方案中用到的 File-Folder-Field 視圖創建了一個基礎。訪問 MSDN 找到更多有關Microsoft 的 XML 規范的信息。

 

您可能感興趣的文章:
  • 解析在.net中使用XSLT轉換xml文檔的示例詳解
  • 如何快速通過XSL轉換XML文件
  • 在asp.net(C#)中采用自定義標簽和XML、XSL顯示數據
  • C#實現XSL轉換的方法

標簽:西雙版納 拉薩 益陽 寧夏 果洛 宿遷 黃石 德州

巨人網絡通訊聲明:本文標題《使用XSLT將XML數據轉換成HTML》,本文關鍵詞  使用,XSLT,將,XML,數據,轉,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用XSLT將XML數據轉換成HTML》相關的同類信息!
  • 本頁收集關于使用XSLT將XML數據轉換成HTML的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本欧美一区二区三区乱码| 日韩精品国产欧美| 亚洲不卡一区二区三区| 在线亚洲人成电影网站色www| 1区2区3区国产精品| 欧美另类videos死尸| 高清不卡在线观看av| 亚洲自拍偷拍图区| 久久只精品国产| 777午夜精品视频在线播放| 成人99免费视频| 精品在线播放午夜| 亚洲天堂a在线| 欧美韩日一区二区三区四区| 日韩午夜电影av| 欧美日韩高清一区二区| 91麻豆国产香蕉久久精品| 国产成人在线观看| 激情深爱一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区91| 亚洲裸体xxx| 亚洲男同1069视频| 夜夜嗨av一区二区三区中文字幕| 国产精品日韩成人| 国产三级精品三级| 国产精品女上位| 欧美国产精品中文字幕| 国产免费久久精品| 国产精品第四页| 国产精品欧美极品| 亚洲欧洲制服丝袜| 亚洲国产精品嫩草影院| 亚洲不卡一区二区三区| 亚洲国产成人porn| 日韩av成人高清| 免费在线观看精品| 极品瑜伽女神91| 国产不卡视频在线观看| 国产成人精品亚洲777人妖 | 色婷婷亚洲综合| 91网站在线播放| 91国偷自产一区二区开放时间 | 韩国av一区二区三区四区| 欧美96一区二区免费视频| 裸体健美xxxx欧美裸体表演| 免费观看一级欧美片| 国产福利精品导航| 色诱视频网站一区| 欧美精品777| 欧美精品一区二区久久久| 国产日韩av一区| 一区二区三区四区不卡在线| 日本欧美一区二区三区| 国产在线播精品第三| 成人av电影在线网| 欧美二区三区91| 国产日韩综合av| 天天色图综合网| 亚洲美腿欧美偷拍| 老鸭窝一区二区久久精品| 成人激情小说乱人伦| 亚洲黄色av一区| 精品一区二区三区免费| 91亚洲男人天堂| 欧美大片在线观看| 亚洲免费观看高清在线观看| 美女www一区二区| 成人性视频网站| 欧美老女人第四色| 国产三级三级三级精品8ⅰ区| 日韩欧美一区二区视频| 一区二区中文字幕在线| 美美哒免费高清在线观看视频一区二区| 国产黄人亚洲片| 日韩免费观看2025年上映的电影| 亚洲天堂福利av| 国产福利一区二区| 制服.丝袜.亚洲.另类.中文| 中文字幕在线不卡视频| 美女在线观看视频一区二区| 一本色道久久综合精品竹菊| 中文字幕成人av| 国产原创一区二区| 欧美一级生活片| 亚洲黄色尤物视频| 成人久久久精品乱码一区二区三区| 欧美一区二区成人| 亚洲国产视频网站| 欧洲人成人精品| 欧美久久婷婷综合色| 亚洲激情六月丁香| 99re热这里只有精品免费视频| 日韩女优毛片在线| 午夜精品一区二区三区免费视频| 在线影视一区二区三区| 一区二区中文字幕在线| 福利电影一区二区三区| 国产欧美日韩精品一区| 国产在线看一区| 欧美一区二区网站| 日韩成人免费看| 欧美精品亚洲一区二区在线播放| 成人激情开心网| 色综合中文综合网| 中文字幕在线一区免费| 国产一区二区三区久久久| 日韩欧美国产三级| 全国精品久久少妇| 精品粉嫩超白一线天av| 久久精品二区亚洲w码| 日韩欧美亚洲国产精品字幕久久久| 亚洲国产成人高清精品| 欧美一区二区三区在| 日本色综合中文字幕| 6080午夜不卡| av电影在线观看一区| 亚洲人成7777| 九九九久久久精品| 日韩电影一区二区三区四区| 日韩欧美一区中文| 国产大片一区二区| 综合久久国产九一剧情麻豆| 欧美中文字幕一二三区视频| 日韩影院免费视频| 精品国产欧美一区二区| 成人性生交大片免费看视频在线| 成人欧美一区二区三区视频网页| 欧美亚洲愉拍一区二区| 美女一区二区三区在线观看| 欧美国产精品劲爆| 欧美色手机在线观看| 九色综合狠狠综合久久| 中文字幕一区二区三区视频 | 日韩一区二区三区免费看 | 99国产欧美另类久久久精品| 欧美va亚洲va| 成人性生交大片| 中文字幕一区在线| 欧美高清一级片在线| 中文字幕亚洲精品在线观看| 欧美熟乱第一页| 韩国午夜理伦三级不卡影院| 亚洲品质自拍视频网站| 91精品在线麻豆| 国产剧情在线观看一区二区| 国产精品国产三级国产aⅴ中文| 在线观看亚洲专区| 国产乱国产乱300精品| 亚洲第一福利视频在线| 久久久国产精华| 欧美日本国产视频| 高清不卡一区二区在线| 麻豆91小视频| 亚洲国产综合色| 国产精品污污网站在线观看| 欧美一级xxx| 欧美三级乱人伦电影| a级高清视频欧美日韩| 激情综合色综合久久综合| 亚洲精品一卡二卡| 国产精品美女久久久久av爽李琼| 日韩一区二区三免费高清| 在线观看www91| 成人av电影观看| 亚洲欧美激情视频在线观看一区二区三区| 精品国产一区二区三区久久影院| 91精品福利在线| 91一区一区三区| 波多野结衣中文字幕一区 | 国产日韩亚洲欧美综合| 欧美电影影音先锋| 日本高清免费不卡视频| 成人激情黄色小说| 国产一区二区在线免费观看| 奇米一区二区三区av| 亚洲成年人影院| 亚洲成人www| 日本亚洲一区二区| 日韩av电影天堂| 美女久久久精品| 日韩电影在线观看电影| 免费观看在线综合| 久久国产精品免费| 久久福利资源站| 久久99国产乱子伦精品免费| 美女网站色91| 国产大陆a不卡| 国产成人精品在线看| 波多野结衣视频一区| 97久久超碰精品国产| 在线精品视频免费观看| 欧美日产国产精品| 日韩久久精品一区| 国产日产精品一区| 一区二区三区影院| 日本欧美在线观看| 国产成人午夜视频| 色婷婷精品大在线视频| 欧美精品在欧美一区二区少妇|