<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免费观看| 久久国产亚洲电影天堂| 中文字幕av无码不卡免费| 亚洲熟妇少妇任你躁在线观看无码| 老司机午夜精品视频在线观看免费 | 一级片在线免费看| 亚洲JIZZJIZZ妇女| 亚洲国产精品xo在线观看| 毛片基地免费观看| va天堂va亚洲va影视中文字幕 | 国产亚洲综合久久| 亚洲精品无码av天堂| 久久国产乱子伦精品免费午夜| 亚洲国模精品一区| 成全在线观看免费观看大全| 久久青青草原亚洲av无码app| av无码久久久久不卡免费网站| 精品日韩99亚洲的在线发布| 国产成人免费高清在线观看| 一级一黄在线观看视频免费| 亚洲国产精品无码中文字| 国产精品成人观看视频免费| 亚洲人成网站18禁止| 亚洲日韩在线观看免费视频| 一级毛片成人免费看免费不卡| 在线综合亚洲欧洲综合网站| 亚洲av无码成人精品区在线播放| a在线观看免费视频| 久久精品国产亚洲av麻豆图片| 免费看国产精品麻豆| 久久香蕉国产线看免费| 精品香蕉在线观看免费| 亚洲理论在线观看| 又硬又粗又长又爽免费看| 国产亚洲欧洲精品| 无码乱肉视频免费大全合集 | 成年免费a级毛片免费看无码| 久久精品国产亚洲AV无码偷窥| 日韩视频在线免费观看|