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

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

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

    乖,別哭的薄殼
    ~一份耕耘,一份收獲~
    posts - 23,comments - 260,trackbacks - 0
    前幾天公司要用xml快速方便的存取屬性N多的數據,跟sinoly合作研究了一下.做了一個小例子.

    1.example.xml--主要數據文件

    <?xml version="1.0" encoding="UTF-8"?>

    <?xml:stylesheet type="text/xsl" href="example.xsl"?>

    <projects id="1">
        
    <project title="一級標題1" index="1">
            
    <items isTrunk="false" title="二級標題1.1" id="items_1">
                
    <result type="2">1</result>
                
    <officer><![CDATA[]]></officer>
                
    <classified>1</classified>
                
    <eligibility>0</eligibility>
                
    <remark></remark>
            
    </items>
            
    <items isTrunk="false" title="二級標題1.2" id="items_2">
                
    <result type="2">3</result>
                
    <officer><![CDATA[]]></officer>
                
    <classified>1</classified>
                
    <eligibility>0</eligibility>
            
    </items>
        
    </project>
        
    <project title="一級標題2" index="2">
            
    <items isTrunk="false" title="二級標題2.1" id="items_3">
                
    <result type="3">3</result>
                
    <officer><![CDATA[]]></officer>
                
    <classified>1</classified>
                
    <eligibility>0</eligibility>
            
    </items>
            
    <items isTrunk="true" title="二級標題2.2">
                
    <item title="三級標題2.2.1" id="item_1">
                    
    <result type="1">2</result>
                    
    <officer><![CDATA[居然是亂碼]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
                
    <item title="三級標題2.2.2" id="item_2">
                    
    <result type="1">3</result>
                    
    <officer><![CDATA[<><>]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
            
    </items>            
            
    <items isTrunk="true" title="二級標題2.3">
                
    <item title="三級標題2.3.1" id="item_3">
                    
    <result type="2">1</result>
                    
    <officer><![CDATA[]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
                
    <item title="三級標題2.3.2" id="item_4">
                    
    <result type="2">1</result>
                    
    <officer><![CDATA[]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
            
    </items>            
        
    </project>
        
    <project title="一級標題3" index="3">
            
    <items isTrunk="false" title="二級標題3.1" id="items_4">
                
    <result type="4" units="元">25345</result>
                
    <officer><![CDATA[sinoly]]></officer>
                
    <classified>1</classified>
                
    <eligibility>0</eligibility>
            
    </items>
            
    <items isTrunk="false" title="二級標題3.2" id="items_5">
                
    <result type="4" units="元">9865764</result>
                
    <officer><![CDATA[]]></officer>
                
    <classified>1</classified>
                
    <eligibility>0</eligibility>
            
    </items>
            
    <items isTrunk="false" title="二級標題3.3" id="items_6">
                
    <result type="2">0</result>
                
    <officer><![CDATA[]]></officer>
                
    <classified>1</classified>
                
    <eligibility>0</eligibility>
            
    </items>
            
    <items isTrunk="true" title="二級標題3.4">
                
    <item title="三級標題3.4.1" id="item_5">
                    
    <result type="1">0</result>
                    
    <officer><![CDATA[]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
                
    <item title="三級標題3.4.2" id="item_6">
                    
    <result type="1">0</result>
                    
    <officer><![CDATA[]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
                
    <item title="三級標題3.4.3" id="item_7">
                    
    <result type="1">0</result>
                    
    <officer><![CDATA[]]></officer>
                    
    <classified>1</classified>
                    
    <eligibility>0</eligibility>
                
    </item>
            
    </items>
        
    </project>
    </projects>

    2.example.xsl--樣式文件,很方便的取到xml數據

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

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

        
    <!--根模板-->    
        
    <xsl:output method="xml"/>

        
    <xsl:template match="/">    
            
    <xsl:apply-templates select="projects/project"/>
            
    <h6>
                
    <button type="submit" class="btn1_mouseout" onmouseover="this.className='btn1_mouseover'" onmouseout="this.className='btn1_mouseout'" title="提交"> 下一步</button>
            
    </h6>
        
    </xsl:template>
        
        
    <!--主題模板-->
        
    <xsl:template match="project">
            
    <TABLE border="0" cellspacing="0" cellpadding="0" class="table">
                
    <tr>
                    
    <td colspan="5" align="center" class="tright">
                        
    <h2>
                            
    <xsl:number value="position()" format="一、"/><xsl:value-of select="@title"/>
                        
    </h2>
                    
    </td>
                
    </tr>
                
    <xsl:apply-templates select="items"/>
            
    </TABLE>
            
    <BR/>
        
    </xsl:template>
        
        
    <!--一級題干模板-->
        
    <xsl:template match="items">
            
    <tr>
                
    <td colspan="2" class="tright">
                    
    <xsl:number value="position()" format="1."/><xsl:value-of select="@title"/>
                
    </td>
                
    <xsl:choose>
                    
    <xsl:when test="@isTrunk[.='false']">
                        
    <xsl:apply-templates select="result"/>
                        
    <xsl:apply-templates select="officer"/>
                    
    </xsl:when>
                    
    <xsl:otherwise>
                        
    <td colspan="3" class="tright" style="color:blue;font-weight:bolder">
                            注意以下幾點
                        
    </td>
                        
    <xsl:apply-templates select="item"/>
                    
    </xsl:otherwise>
                
    </xsl:choose>
            
    </tr>
        
    </xsl:template>
        
            
    <!--二級題干模板-->
        
    <xsl:template match="item">

          
    <tr>
            
    <td class="tright" style="padding-left:20px" colspan="2">
                
    <h4><xsl:number value="position()" format="(a)."/><xsl:value-of select="@title"/></h4>
            
    </td>
                
    <xsl:apply-templates select="result"/>
                
    <xsl:apply-templates select="officer"/>
          
    </tr>
        
    </xsl:template>
        
        
    <!--選擇框模板-->
        
    <xsl:template match="result">
                        
    <xsl:choose>
                            
    <xsl:when test="@type = '1'">
                                
    <td width="15%">
                                
    <xsl:element name="select">
                                    
    <xsl:attribute name="name">re_<xsl:value-of select="../@id"/></xsl:attribute>
                                    
    <!--<select name="select">-->
                                        
    <xsl:choose>
                                            
    <xsl:when test=".='0'">
                                                
    <option value="0" selected="selected">請選擇 </option>
                                                
    <option value="1">符合</option>
                                                
    <option value="2">基本符合</option>
                                                
    <option value="3">不符合</option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='1'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1" selected="selected">符合</option>
                                                
    <option value="2">基本符合</option>
                                                
    <option value="3">不符合</option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='2'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1">符合</option>
                                                
    <option value="2" selected="selected">基本符合</option>
                                                
    <option value="3">不符合</option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='3'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1">符合</option>
                                                
    <option value="2">基本符合</option>
                                                
    <option value="3" selected="selected">不符合</option>
                                            
    </xsl:when>                                        
                                        
    </xsl:choose>
                                        
    <!--</select>-->
                                    
    </xsl:element>
                                
    </td>
                            
    </xsl:when>
                            
    <xsl:when test="@type = '2'">
                                
    <td width="15%">
                                    
    <xsl:element name="select">
                                    
    <xsl:attribute name="name">re_<xsl:value-of select="../@id"/></xsl:attribute>
                                        
    <xsl:choose>
                                            
    <xsl:when test=".='0'">
                                                
    <option value="0" selected="selected">請選擇 </option>
                                                
    <option value="1"></option>
                                                
    <option value="2"></option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='1'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1" selected="selected"></option>
                                                
    <option value="2"></option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='3'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1"></option>
                                                
    <option value="2" selected="selected"></option>
                                            
    </xsl:when>                        
                                        
    </xsl:choose>
                                    
    </xsl:element>
                                
    </td>
                            
    </xsl:when>
                            
    <xsl:when test="@type = '3'">
                                
    <td width="15%">
                                    
    <xsl:element name="select">
                                    
    <xsl:attribute name="name">re_<xsl:value-of select="../@id"/></xsl:attribute>
                                        
    <xsl:choose>
                                            
    <xsl:when test=".='0'">
                                                
    <option value="0" selected="selected">請選擇 </option>
                                                
    <option value="1"></option>
                                                
    <option value="2"></option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='1'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1" selected="selected"></option>
                                                
    <option value="2"></option>
                                            
    </xsl:when>
                                            
    <xsl:when test=".='3'">
                                                
    <option value="0">請選擇 </option>
                                                
    <option value="1"></option>
                                                
    <option value="2" selected="selected"></option>
                                            
    </xsl:when>                        
                                        
    </xsl:choose>
                                    
    </xsl:element>
                                
    </td>
                            
    </xsl:when>

                            
    <xsl:otherwise>
                                
    <td width="15%">
                                
    <xsl:element name="textarea">
                                    
    <xsl:attribute name="name">re_<xsl:value-of select="../@id"/></xsl:attribute><xsl:value-of select="."/>
                                
    </xsl:element>
                                    
    <xsl:value-of select="@units"/>
                                
    </td>
                            
    </xsl:otherwise>
                        
    </xsl:choose>

        
    </xsl:template>
        
            
    <!--責任人模板-->
        
    <xsl:template match="officer">
            
    <td width="9%" class="tright">責任人</td>
            
    <td width="11%">
            
    <xsl:element name="textarea">
                
    <xsl:attribute name="name">of_<xsl:value-of select="../@id"/></xsl:attribute>
                
    <xsl:value-of select="."/>
            
    </xsl:element>
            
    </td>
        
    </xsl:template>
        
    </xsl:stylesheet>

    3.index.html--用javascript導入數據并能修改xml里的數據.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>測試</title>
    </head>
    <link rel="Stylesheet" type="text/css" href="focusform.css"/>
    <script language="javascript" src="form.js"></script>
    <script type="text/javascript" src="detect.js"></script>
    <script type="text/javascript" src="xmldom.js"></script>
    <script type="text/javascript">
    //載入xml與xsl文件
        var oxml = new XmlDom();
        
    var oxsl = new XmlDom();
        oxml.async 
    = false;//同步載入
        oxsl.async = false;
        oxml.load(
    "example.xml");
        oxsl.load(
    "example.xsl");
        
    if (oxml.parseError != 0{
            
    var oError = oxml.parseError;         
            alert(
    "An error occurred:\nError Code: "
                  
    + oError.errorCode + "\n"
                  
    + "Line: " + oError.line + "\n"
                  
    + "Line Pos: " + oError.linepos + "\n"
                  
    + "Reason: " + oError.reason);
        }

        
    if (oxsl.parseError != 0{
            
    var oError = oxsl.parseError;         
            alert(
    "An error occurred:\nError Code: "
                  
    + oError.errorCode + "\n"
                  
    + "Line: " + oError.line + "\n"
                  
    + "Line Pos: " + oError.linepos + "\n"
                  
    + "Reason: " + oError.reason);
        }

        
    var sResult = oxml.transformNode(oxsl);
        
    //alert(sResult);
    //
    一些操作
    function btnSub(){
        
    var fes = document.forms[0].elements;
        
    for(var i = 0;i<fes.length;i++){
            
    var name = fes[i].name;
            
    if(name.indexOf('re_')!=-1){
                
    var xmlid=name.substring(3,name.length);
                
    var obj;// =  oxml.getElementById("items_1");//xml的dom里沒有這個方法?
                var oItems1 = oxml.getElementsByTagName("items");//也可以用xpath實現。
                var oItems2 = oxml.getElementsByTagName("item");
                
    for(var j=0;j<oItems1.length;j++){
                    
    if(oItems1[j].getAttribute('id')==xmlid){
                        obj 
    = oItems1[j];
                        
    break;
                    }

                }

                
    for(var j=0;j<oItems2.length;j++){
                    
    if(oItems2[j].getAttribute('id')==xmlid){
                        obj 
    = oItems2[j];
                        
    break;
                    }

                }

                
    if(obj){
                    obj.childNodes[
    0].text = fes[i].value;
                }
    else{
                    alert(
    "在xml中未找到id為"+xmlid+"的items或item");
                }

            }

            
    if(name.indexOf('of_')!=-1){
                
    var xmlid=name.substring(3,name.length);
                
    var oItems1 = oxml.getElementsByTagName("items");
                
    var oItems2 = oxml.getElementsByTagName("item");
                
    for(var j=0;j<oItems1.length;j++){
                    
    if(oItems1[j].getAttribute('id')==xmlid){
                        obj 
    = oItems1[j];
                        
    break;
                    }

                }

                
    for(var j=0;j<oItems2.length;j++){
                    
    if(oItems2[j].getAttribute('id')==xmlid){
                        obj 
    = oItems2[j];
                        
    break;
                    }

                }

                
    if(obj){
                    obj.childNodes[
    1].text = fes[i].value;
                }
    else{
                    alert(
    "在xml中未找到id為"+xmlid+"的items或item");
                }
            
            }

        }

        alert(oxml.xml);
        
    //alert(oxml.childNodes[2].xml);
        return false;
    }

        
    </script>
    </head>

    <body>
    <form name="form1" action="test.jsp" method="post" onsubmit="return btnSub();">
    <script type="text/javascript">
        document.write(sResult);
    </script>
    </form>
    </body>
    </html>

    需要用到的輔助文件
    4.focusform.css--樣式文件
    5.form.js文本框的效果
    6.detect.js--瀏覽器及操作系統識別(取自javascript高級程序設計)
    7.xmldom.js--不同瀏覽器xml操作統一(取自javascript高級程序設計)

    下載地址
    posted on 2007-07-07 00:12 小祝 閱讀(4583) 評論(7)  編輯  收藏 所屬分類: Javascript

    FeedBack:
    # re: xml+xsl+javascript取值及修改數據
    2007-07-08 11:14 | sinoly
    汗一個。呵呵。。。
    是不是可以找你要點費用?貌似有部分我的代碼哦:)
    ps:北漂對你們是一種歷練,有需要的時候給我電話就好。我想,北京怎么我還能活動一下的  回復  更多評論
      
    # re: xml+xsl+javascript取值及修改數據
    2007-07-08 15:43 | 小祝
    @sinoly
    呵呵,我又不是拿來商業目的,開源的。。。給你留個名好了,呵呵~
    先謝謝了,我還是先找找看了,不行再找你幫忙,呵呵~  回復  更多評論
      
    # re: xml+xsl+javascript取值及修改數據
    2007-07-08 16:40 | 飄搖
    看見代碼就頭疼  回復  更多評論
      
    # re: xml+xsl+javascript取值及修改數據
    2007-07-10 10:48 | sinoly
    @小祝
    呵呵,我開個玩笑咯。。。
    不過經過這一次的處理,堅定了我以后在項目中使用統一xml處理方式的想法了。以前最為頭痛的統計對服務器的負載問題現在轉移到了客戶端,而服務器僅僅只進行數據規整,感覺應該是處理之道吧  回復  更多評論
      
    # re: xml+xsl+javascript取值及修改數據
    2009-03-28 16:18 | sdjl

    下載不了  回復  更多評論
      
    # re: xml+xsl+javascript取值及修改數據
    2009-03-31 08:58 | 小祝
    @sdjl
    不好意思,blogjava把這個文件弄丟失了,我這也沒備份了,
    detect.js 和 xmldom.js 在我的博文 《javascript學習筆記(六)--資料》里有,另外兩個其實無關緊要,有沒有都無所謂,只是樣子難看了點~~~  回復  更多評論
      
    # re: xml+xsl+javascript取值及修改數據
    2010-05-14 12:54 | 在線建模
    恩,先看看能不能用,呵呵  回復  更多評論
      
    主站蜘蛛池模板: 亚洲免费视频播放| 一级成人a毛片免费播放| 暖暖日本免费在线视频| 亚洲毛片免费观看| 亚洲一区免费视频| 亚洲啪啪免费视频| 成人免费777777| 狠狠综合亚洲综合亚洲色| 国产在线a不卡免费视频| 亚洲精品人成网线在线播放va | 91禁漫免费进入| 一区二区三区亚洲| 精品福利一区二区三区免费视频| 亚洲成在人线电影天堂色| 日本三级2019在线观看免费| 亚洲综合偷自成人网第页色| 超pen个人视频国产免费观看| 国产精品亚洲五月天高清| 亚洲国产成人VA在线观看| 丝袜捆绑调教视频免费区| 久久久久亚洲av无码专区导航| 男女超爽刺激视频免费播放| 男人的天堂av亚洲一区2区| 亚洲精品97久久中文字幕无码| 国产在线精品一区免费香蕉 | 亚洲欭美日韩颜射在线二| 最好免费观看高清在线| 亚洲18在线天美| 亚洲精品成人在线| 91高清免费国产自产拍2021| 日本亚洲免费无线码| 日韩精品成人亚洲专区| 久久久久久久久久国产精品免费| 亚洲综合久久一本伊伊区| 啊v在线免费观看| 毛片无码免费无码播放| 亚洲国产精品嫩草影院| 亚洲VA中文字幕无码一二三区| 免费中文熟妇在线影片| 久久国产精品免费一区| 亚洲制服丝袜第一页|