HTML4STRICT 25
XMLChecker.html Guest on 2nd September 2020 12:03:02 PM
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  3. <title>設定XMLチェックツール</title>
  4.  
  5. <script type="text/VBScript" charset="UTF-8">
  6. <!--
  7. Function  StrTrim(txt)
  8.   StrTrim=Trim(txt)
  9. End Function
  10. -->
  11. <script type="text/JavaScript" charset="UTF-8">
  12. var MAX_DOMAIN_NO = 1;       //最大ドメイン数
  13.  
  14. var messOK = "<font color='blue'>OK</font><br>";
  15. var messNotFoundNode ="要素が見つかりません。";
  16. var messPleaseCheckXML ="<font color='red'>launchsetting.xmlの内容を確認してください。</font><br>";
  17. var messCantGetText ="の値が取得できません。<br>";
  18. var messEmptyNode ="の値が入力されていません。<br>";
  19. var messEroorNode = "の値が不正です。<br>";
  20. var messEroorNode2 = "パスは必ず'/'から入力してください。<br>";
  21. var messEroorNode3 = "パスは必ず'/'で終了してください。<br>";
  22. var messEroorNode4 = "パスは必ず'.cab'で終了してください。<br>";
  23. var node;
  24. var ErrorFont ="<font color='red'>エラー:";
  25. var OKFont ="<font color='blue'>";
  26. var FontClose ="</font>";
  27. var messPleaseCheckLangXML ="<font color='red'>langsetting.xmlの内容を確認してください。</font><br>";
  28. var messProperty = "属性";
  29. var messTypeProperty="Navigate,FirstNaviのいずれかを指定してください。<br>";
  30. // 2012/02/14 V2.7 teihin v0207-07-5 -s
  31. var xmlDocLaunchsetting = new ActiveXObject('Microsoft.XMLDOM');
  32. xmlDocLaunchsetting.async = false;
  33. xmlDocLaunchsetting.load("./launchsetting.xml");
  34. // 2012/02/14 V2.7 teihin v0207-07-5 -e
  35. // 2012/02/14 V2.7 teihin v0207-07-8 -s
  36. var xmlDocLangsetting = new ActiveXObject('Microsoft.XMLDOM');
  37. xmlDocLangsetting.async = false;
  38. // 2012/02/14 V2.7 teihin v0207-07-8 -e
  39.  
  40. function chkBrowser(){
  41.     try{
  42.             //ブラウザチェック windowsのIE5.5~8.0
  43.         var agent = navigator.userAgent ;
  44.         var appve = navigator.appVersion ;
  45.         var appna = navigator.appName ;
  46.  
  47.         // 2008/12/13 jiaoyexin 2.19 -s
  48.         //if(agent.indexOf("Win") != -1 && !(agent.indexOf("95") != -1) && !(agent.indexOf("NT 4.0") != -1) && !(agent.indexOf("NT 6.0") != -1)){
  49.        // 2009/01/23 hayashi CD-03-001-00003 -s
  50.        //if(agent.indexOf("Win") != -1 && !(agent.indexOf("95") != -1) && !(agent.indexOf("NT 4.0") != -1) && !(agent.indexOf("98") != -1) && !(agent.indexOf("Me") != -1)){
  51.        // 2010/02/10 baojiawei ZSIE8-01-032-003 (2.1) -s
  52.        //if(agent.indexOf("Win") != -1 && (agent.indexOf("NT 5.0") != -1 || agent.indexOf("NT 5.1") != -1 || agent.indexOf("NT 6.0") != -1)){
  53.        // 2010/05/18 chou 2.1.3 -s
  54.        //if(agent.indexOf("Win") != -1 && (agent.indexOf("NT 5.0") != -1 || agent.indexOf("NT 5.1") != -1 || agent.indexOf("NT 6.0") != -1 || agent.indexOf("NT 5.2") != -1)){
  55.        // 2012/02/14 V2.7 teihin v0207-09-3 -s
  56.        //if(agent.indexOf("Win") != -1 && (agent.indexOf("NT 5.0") != -1 || agent.indexOf("NT 5.1") != -1 || agent.indexOf("NT 6.0") != -1 || agent.indexOf("NT 5.2") != -1 || agent.indexOf("NT 6.1") != -1)){
  57.        // 2012/09/05 V2.8 zhang v0208-01-3(1) -s
  58.        //if(agent.indexOf("WOW64") == -1 && agent.indexOf("Win64") == -1 && agent.indexOf("Win") != -1 && (agent.indexOf("NT 5.0") != -1 || agent.indexOf("NT 5.1") != -1 || agent.indexOf("NT 6.0") != -1 || agent.indexOf("NT 5.2") != -1 || agent.indexOf("NT 6.1") != -1)){
  59.        // 2013/05/28 V2.9 zhang v0209-01-3(1) -s
  60.         //if(agent.indexOf("Win") != -1 && (agent.indexOf("NT 5.0") != -1 || agent.indexOf("NT 5.1") != -1 || agent.indexOf("NT 6.0") != -1 || agent.indexOf("NT 6.1") != -1) && (agent.indexOf("Win64")==-1 && agent.indexOf("x64")==-1)){
  61.         if(agent.indexOf("Win") != -1 && (agent.indexOf("NT 5.1") != -1 || agent.indexOf("NT 6.0") != -1 || agent.indexOf("NT 6.1") != -1 || agent.indexOf("NT 6.2") != -1) && (agent.indexOf("Win64")==-1 && agent.indexOf("x64")==-1)){
  62.        // 2013/05/28 V2.9 zhang v0209-01-3(1) -e
  63.        // 2012/09/05 V2.8 zhang vv0208-01-3(1) -e
  64.        // 2012/02/14 V2.7 teihin v0207-09-3 -e
  65.        // 2010/05/18 chou 2.1.3 -e
  66.        // 2010/02/10 baojiawei ZSIE8-01-032-003 (2.1) -e
  67.        // 2009/01/23 hayashi CD-03-001-00003 -e
  68.        // 2008/12/13 jiaoyexin 2.19 -e
  69.            if (appna  == "Microsoft Internet Explorer" ){
  70.                version = agent.substring((agent.indexOf('MSIE') + 5),(agent.indexOf('MSIE') + 8)) ;
  71.                 ver =parseFloat(version);
  72.                 //2010/02/10 baojiawei ZSIE8-01-032-003 (2.1) -s
  73.                 //if(ver >= 5.5 && ver <= 7.0){
  74.                         // 2012/02/13 V2.7 teihin v0207-05-3 -s
  75.                         //if(ver >= 5.5 && ver <= 8.0){
  76.                 // 2013/05/28 V2.9 zhang v0209-01-3(1) -s
  77.                         //if(ver >= 5.5 && ver <= 9.0){
  78.                         if(ver >= 7 && ver <= 10.0){
  79.                 // 2013/05/28 V2.9 zhang v0209-01-3(1) -e
  80.                         // 2012/02/13 V2.7 teihin v0207-05-3 -e
  81.                //2010/02/10 baojiawei ZSIE8-01-032-003 (2.1) -e
  82.                    return true;
  83.                 }
  84.                 else{
  85.                     return false;
  86.                 }
  87.             }
  88.             else{
  89.                 return false;
  90.             }
  91.         }
  92.         else{
  93.             return false;
  94.         }
  95.     }catch(e){return false;}
  96.  
  97. }
  98.  
  99. function chkHasNode(nodename){
  100.     try{
  101.         // 2012/02/14 V2.7 teihin v0207-07-5 -s
  102.         // node = LAUNCHSETTING.XMLDocument.selectSingleNode(nodename);
  103.         node = xmlDocLaunchsetting.selectSingleNode(nodename);
  104.         // 2012/02/14 V2.7 teihin v0207-07-5 -e
  105.         if(node==null){
  106.             writeResult(ErrorFont + nodename + messNotFoundNode + FontClose + "<br>");
  107.             writeResult(messPleaseCheckXML);
  108.             return false;
  109.         }
  110.         return true;
  111.      }catch(e){
  112.         writeResult(ErrorFont + nodename + messNotFoundNode + FontClose + "<br>");
  113.         writeResult(messPleaseCheckXML);
  114.         return false;
  115.     }
  116. }
  117.  
  118. //指定されたノード名により、対応のノード情報取得
  119. function chkLangHasNode(nodename){
  120.     try{
  121.         // 2012/02/14 V2.7 teihin v0207-07-5 -s
  122.         // node = LANGSETTING.XMLDocument.selectSingleNode(nodename);
  123.         node = xmlDocLangsetting.selectSingleNode(nodename);
  124.         // 2012/02/14 V2.7 teihin v0207-07-5 -e
  125.         if(node==null){
  126.             writeResult(ErrorFont + nodename + messNotFoundNode + FontClose + "<br>");
  127.             writeResult(messPleaseCheckLangXML);
  128.             return false;
  129.         }
  130.         return true;
  131.      }catch(e){    
  132.         writeResult(ErrorFont + nodename + messNotFoundNode + FontClose + "<br>");
  133.         writeResult(messPleaseCheckLangXML);
  134.         return false;
  135.     }
  136. }
  137.  
  138. //起動設定ファイルの言語設定ファイル定義をチェックする
  139. function chkLangSupport(nodename){
  140.  
  141.     var subNodeName;
  142.     var nodes;
  143.     var i=0;
  144.     var strFont;
  145.     var langType;
  146.     var chkPropertyFlag;
  147.     var chkFileFlag;
  148.     var launchFile
  149.    
  150.     if(chkHasNode(nodename)){
  151.         writeResult(messOK);
  152.         writeResult("------LaunchSettings/SupportLang/LangSettingPath要素チェック------<br>");
  153.         subNodeName = "LaunchSettings/SupportLang/LangSettingPath";
  154.         //「LangSettingPath」をチェックする
  155.         if(chkHasNode(subNodeName)){
  156.             try{
  157.                 //LangSettingPath情報を取得する
  158.                 // 2012/02/14 V2.7 teihin v0207-07-6 -s
  159.                 // nodes = LAUNCHSETTING.XMLDocument.selectNodes(subNodeName);
  160.                 nodes = xmlDocLaunchsetting.selectNodes(subNodeName);
  161.                 // 2012/02/14 V2.7 teihin v0207-07-6 -e
  162.                 //LangSettingPath情報チェック処理を行う
  163.                 for(i=0;i<nodes.length;i++){
  164.                    //-----------lang属性をチェックする-----------------
  165.                    chkPropertyFlag = chkLaunchLangType(nodes.item(i));
  166.                    //-----------定義された設定ファイルをチェック-------
  167.                    chkFileFlag = chkLaunchLangNode(nodes.item(i));
  168.                    //-----------エラーメッセージを出力-----------------
  169.                    //メッセージのカラーを設定
  170.                    if(chkPropertyFlag == "0" && chkFileFlag == "0"){
  171.                        strFont = OKFont;
  172.                    } else {
  173.                        strFont = ErrorFont;
  174.                    }
  175.                    
  176.                    //言語タイプのメッセージを出力
  177.                    writeResult(OKFont+"言語設定ファイル" + (i + 1) + ":<br>" + FontClose);
  178.                     if(chkPropertyFlag == "0"){
  179.                         strFont = OKFont;
  180.                     } else {
  181.                         strFont = ErrorFont;
  182.                     }
  183.                     writeResult("    ");
  184.                     writeResult(strFont);
  185.                     if(chkPropertyFlag =="0"){
  186.                         langType = nodes.item(i).attributes.getNamedItem("lang").value;
  187.                         writeResult("言語タイプ:" + langType + "<br>");
  188.                     } else if(chkPropertyFlag =="1"){
  189.                         writeResult("lang" + messProperty + messCantGetText);
  190.                         writeResult("    " + messPleaseCheckXML);
  191.                     } else if(chkPropertyFlag =="2"){
  192.                         writeResult("lang" + messProperty + messEmptyNode);
  193.                         writeResult("    言語種別属性を指定してください。<br>");
  194.                     }
  195.                     writeResult(FontClose);
  196.                     //設定ファイルのメッセージを出力
  197.                     if(chkFileFlag == "0"){
  198.                         strFont = OKFont;
  199.                     } else {
  200.                         strFont = ErrorFont;
  201.                     }
  202.                     writeResult("    ");
  203.                     writeResult(strFont);
  204.                     if(chkFileFlag=="0"){
  205.                         launchFile = nodes.item(i).text;
  206.                         writeResult("言語設定XMLファイル:"+launchFile+ "<br>");
  207.                     } else if(chkFileFlag=="1"){
  208.                         writeResult(nodename+messCantGetText);
  209.                         writeResult("    " + messPleaseCheckXML);
  210.                     } else if(chkFileFlag=="2"){
  211.                         writeResult(nodename+messEmptyNode);
  212.                         writeResult("    言語設定XMLファイルのパスを指定してください。<br>");
  213.                     } else if(chkFileFlag=="3"){
  214.                         launchFile = nodes.item(i).text;
  215.                         writeResult("言語設定XMLファイルのパス:" + launchFile + "<br>");
  216.                         writeResult("    " + nodename + messEroorNode);
  217.                         writeResult("    言語設定XMLファイルのパスを正しく指定してください。<br>");
  218.                     }
  219.                     writeResult(FontClose);
  220.                 }
  221.             } catch(e){
  222.                 writeResult(ErrorFont + "lang" + messProperty + messCantGetText + FontClose);
  223.                 writeResult(messPleaseCheckXML);
  224.             }
  225.         }
  226.     }
  227. }
  228.  
  229. //言語設定ファイルの言語種別(lang)チェック
  230. function chkLaunchLangType(node){
  231.    
  232.     var retFlag = "0";
  233.     try{
  234.         var langType = node.attributes.getNamedItem("lang").value;
  235.         langType=StrTrim(langType);
  236.  
  237.         //空白の場合、エラーメッセージを表示
  238.         if(langType==""){
  239.             retFlag = "2";
  240.         //空白以外の場合、正常終了
  241.         }else{
  242.             retFlag = "0";
  243.         }
  244.  
  245.     //該当属性存在しない場合、エラーメッセージを表示
  246.     } catch(e){
  247.         retFlag = "1";
  248.     }
  249.     return retFlag;
  250. }
  251.  
  252. //言語設定ファイルの言語種別(lang)チェック
  253. function chkLangType(node,flag){
  254.  
  255.     try{
  256.         var langType = node.attributes.getNamedItem("lang").value;
  257.         langType=StrTrim(langType);
  258.         //空白の場合、エラーメッセージを表示
  259.         if(langType==""){
  260.             writeResult(ErrorFont + "lang" + messProperty + messEmptyNode);
  261.             writeResult("言語種別属性を指定してください。<br>");
  262.             writeResult(FontClose);
  263.         //空白以外の場合、正常終了
  264.         }else{
  265.             writeResult(messOK);
  266.             writeResult(OKFont + "言語タイプ:" + langType + FontClose + "<br>");
  267.         }
  268.         return langType;
  269.     //該当属性存在しない場合、エラーメッセージを表示
  270.     } catch(e){
  271.         writeResult(ErrorFont + "lang" + messProperty + messCantGetText + FontClose);
  272.         if(flag=="launch"){
  273.             writeResult(messPleaseCheckXML);
  274.         } else {
  275.             writeResult(messPleaseCheckLangXML);
  276.         }
  277.     }
  278. }
  279.  
  280. //言語設定ファイルをチェックする
  281. function chkLangXMLFile(nodename){
  282.  
  283.     var subNodeName;
  284.     var nodes;
  285.     var i=0;
  286.     var launchFile;
  287.     var chkFlag;
  288.     if(chkHasNode(nodename)){
  289.         //ノード名
  290.         subNodeName = "LaunchSettings/SupportLang/LangSettingPath";
  291.         //該当ノードが存在する場合
  292.         if(chkHasNode(subNodeName)){
  293.             try{
  294.                 //言語設定ファイル名を取得する
  295.                 // 2012/02/14 V2.7 teihin v0207-07-7 -s
  296.                 // nodes = LAUNCHSETTING.XMLDocument.selectNodes(subNodeName);
  297.                 nodes = xmlDocLaunchsetting.selectNodes(subNodeName);
  298.                 // 2012/02/14 V2.7 teihin v0207-07-7 -e
  299.                 for(i=0;i<nodes.length;i++){
  300.                    chkFlag = chkLaunchLangNode(nodes.item(i));
  301.                    if(chkFlag=="0"){
  302.                        //設定ファイルを取得
  303.                        launchFile = nodes.item(i).text;
  304.                        //言語ファイルをチェック
  305.                        chkLangFileSetting(launchFile);
  306.                    }
  307.                }
  308.            }catch(e){
  309.                writeResult(ErrorFont + nodename+messCantGetText+FontClose);
  310.                writeResult(messPleaseCheckXML);
  311.            }
  312.            
  313.        }
  314.    }
  315. }
  316.  
  317.  
  318. function chkLaunchLangNode(node){
  319.  
  320.    var launchFile;
  321.    var IsGetNode;
  322.    var filename;
  323.    var retFlag = "0";
  324.  
  325.    //定義された言語設定ファイル名取得
  326.    try{
  327.        launchFile = node.text;
  328.        IsGetNode=true;
  329.    }catch(e){
  330.        retFlag="1";
  331.    }
  332.  
  333.    if(IsGetNode){
  334.        //値未設定の場合、エラーメッセージを表示
  335.        if(launchFile==""){
  336.            retFlag="2";
  337.        }else{
  338.            filename=launchFile.split("/");
  339.            filename=filename[filename.length-1];
  340.            //ファイルを指定しない場合、エラーメッセージを表示する
  341.            if(filename==""){
  342.                retFlag="3";
  343.            //正常メッセージを表示する
  344.            }else{
  345.                retFlag="0";
  346.            }
  347.        }
  348.    }
  349.  
  350.    return retFlag;
  351. }
  352.  
  353. //指定された言語設定ファイルの内容をチェック
  354. function chkLangFileSetting(launchFile){
  355.  
  356.    var ret;
  357.    var i;
  358.    var nodes;
  359.    var text;
  360.    var nodename;
  361.  
  362.    writeResult("<br>------言語設定XMLファイルチェック------<br>");
  363.     writeResult(OKFont + "言語設定XMLファイル名:" + launchFile + FontClose + "<br>");
  364.  
  365.     //ファイル読み込み
  366.     ret = loadXML(launchFile);
  367.  
  368.     //XMLのロード
  369.     if(ret!=false){
  370.         //lang属性チェック
  371.         writeResult("------LangSettings要素チェック------<br>");
  372.         nodename = "LangSettings";
  373.         if(chkLangHasNode(nodename)){
  374.             //該当ノードのlang属性をチェックする
  375.             var lang = chkLangType(node,"lang");
  376.             writeResult("------LangSettings/InstallPath要素チェック------<br>");
  377.             nodename = "LangSettings/InstallPath";
  378.             chkPathNode(nodename,"インストールパス");
  379.  
  380.             writeResult("------LangSettings/NaviPage要素チェック------<br>");
  381.             nodename = "LangSettings/NaviPage";
  382.             chkFileNode(nodename,"説明ページファイル","File");
  383.  
  384.             writeResult("------LangSettings/DictXML要素チェック------<br>");
  385.             nodename = "LangSettings/DictXML";
  386.             chkFileNode(nodename,"ユーザ辞書XMLファイル","XMLFile");
  387.  
  388.             writeResult("------LangSettings/HelpPage要素チェック------<br>");
  389.             nodename = "LangSettings/HelpPage";
  390.             chkFileNode(nodename,"ヘルプページファイル","File");
  391.  
  392.             writeResult("------LangSettings/LangCodes要素チェック------<br>");
  393.             nodename = "LangSettings/LangCodes";
  394.             chkLangCodes(nodename);
  395.         }
  396.     }
  397. }
  398.  
  399. //指定されたXMLを読み込む
  400. function loadXML(launchFile){
  401.     //XMLのロード
  402.     var filePathList;
  403.     var fileName;
  404.     var path;
  405.    
  406.     //XMLのファイル名と言語別のパス名取得
  407.     filePathList=launchFile.split("/");
  408.     path=filePathList[filePathList.length-3] + "/" + filePathList[filePathList.length-2];
  409.     fileName= filePathList[filePathList.length-1];
  410.    
  411.     //メッセージのファイルを修正
  412.     messPleaseCheckLangXML ="<font color='red'>" + fileName + "の内容を確認してください。</font><br>";
  413.  
  414.     //ファイル読み込む
  415.     // 2012/02/14 V2.7 teihin v0207-07-8 -s
  416.     // if(!LANGSETTING.XMLDocument.load("./" + path + "/" + fileName)){
  417.         // if(LANGSETTING.XMLDocument.parseError.errorCode == -2146697211){
  418.     if(!xmlDocLangsetting.load("./" + path + "/" + fileName)){
  419.         if(xmlDocLangsetting.parseError.errorCode == -2146697211){
  420.     // 2012/02/14 V2.7 teihin v0207-07-8 -e
  421.             ErrFlg =true;
  422.             writeResult(ErrorFont+"launchsetting.xmlに指定された言語設定XMLファイルが読み込めません。<br>指定されたファイルを確認してください。"+FontClose+"<br>");
  423.             return false;
  424.         // 2012/02/14 V2.7 teihin v0207-07-8 -s
  425.         // } else if(LANGSETTING.XMLDocument.parseError.errorCode == -1072896683){
  426.         } else if(xmlDocLangsetting.parseError.errorCode == -1072896683){
  427.         // 2012/02/14 V2.7 teihin v0207-07-8 -e
  428.             ErrFlg =true;
  429.             writeResult("------LangSettings要素チェック------<br>");
  430.             writeResult(ErrorFont + "LangSettings" + messNotFoundNode + FontClose + "<br>");
  431.             writeResult(messPleaseCheckLangXML);
  432.             return false;
  433.         }else{
  434.             // 2012/02/14 V2.7 teihin v0207-07-8 -s
  435.             // writeResult(LANGSETTING.XMLDocument.parseError.errorCode + "<br>");
  436.             writeResult(xmlDocLangsetting.parseError.errorCode + "<br>");
  437.             ErrFlg =true;
  438.             // writeResult(ErrorFont+"言語設定XMLファイルの内容(構文)を正しく読み込めませんでした。<br>次のメッセージを参考に言語設定XMLファイルの内容を確認してください。<br>【エラー原因】<br>"+LANGSETTING.XMLDocument.parseError.reason+FontClose+"<br>")
  439.             writeResult(ErrorFont+"言語設定XMLファイルの内容(構文)を正しく読み込めませんでした。<br>次のメッセージを参考に言語設定XMLファイルの内容を確認してください。<br>【エラー原因】<br>"+xmlDocLangsetting.parseError.reason+FontClose+"<br>")
  440.             // 2012/02/14 V2.7 teihin v0207-07-8 -e
  441.             return false;
  442.         }
  443.     }
  444. }
  445.  
  446. //言語設定ファイルに定義されたパス情報をチェックする
  447. function chkPathNode(nodename,pathName,lang)
  448. {
  449.         var IsGetNode;
  450.         var text;
  451.         var isNeedCAB=false;
  452.         if(typeof lang != 'undefined') isNeedCAB=true;
  453.  
  454.         //指定されたノードの情報取得
  455.         if(chkLangHasNode(nodename)){
  456.                 //ノードの設定値取得
  457.                 try{
  458.                         text = node.text;
  459.                         IsGetNode=true;
  460.                 }catch(e){
  461.                         writeResult(ErrorFont + nodename + messCantGetText+FontClose);
  462.                         writeResult(messPleaseCheckXML);
  463.                 }
  464.                
  465.                 //ノードの設定値チェック
  466.                 if(IsGetNode){
  467.                         //パス未設定の場合、エラーをする
  468.                         if(text==""){
  469.                                 writeResult(ErrorFont + nodename + messEmptyNode);
  470.                                 writeResult( pathName + "を指定してください。<br>");
  471.                                 writeResult(FontClose);
  472.                         }else{
  473.                                 if(isNeedCAB){
  474.                                         if(text.slice(text.length-4,text.length).toLowerCase()!=".cab"){
  475.                                                 writeResult(ErrorFont + nodename + messEroorNode);
  476.                                                 writeResult(messEroorNode4);
  477.                                                 writeResult(FontClose);
  478.                                         }else{
  479.                                                 writeResult(messOK);
  480.                                                 writeResult(OKFont + pathName + ":" + text + FontClose +"<br>");
  481.                                         }
  482.                                 }else{
  483.                                         if(!isNeedCAB && text.charAt(text.length-1)!="/"){ //最後文字は「/」以外の場合、エラーをする
  484.                                                 writeResult(ErrorFont + nodename + messEroorNode);
  485.                                                 writeResult(messEroorNode3);
  486.                                                 writeResult(FontClose);
  487.                                         }else{
  488.                                                 writeResult(messOK);
  489.                                                 writeResult(OKFont + pathName + ":" + text + FontClose +"<br>");
  490.                                         }
  491.                                 }
  492.                         }
  493.                 }
  494.         }
  495. }
  496.  
  497. //言語設定ファイルのパス設定値をチェック
  498. function chkFileNode(nodename, fileName, flag)
  499. {
  500.     var IsGetNode;
  501.     var text;
  502.     var filename;
  503.  
  504.     //指定されたノードの情報取得
  505.     if(chkLangHasNode(nodename)){
  506.         //ノードの設定値取得
  507.         try{
  508.             text = node.text;
  509.             IsGetNode=true;
  510.         }catch(e){    
  511.             writeResult(ErrorFont+nodename+messCantGetText+FontClose);
  512.             writeResult(messPleaseCheckLangXML);
  513.         }
  514.         //ノードの設定値チェック
  515.         if(IsGetNode){
  516.             //ファイル未設定
  517.             if(text==""){
  518.                 writeResult(ErrorFont+nodename+messEmptyNode);
  519.                 writeResult( fileName + "のパスを指定してください。<br>");
  520.                 writeResult(FontClose);
  521.             //設定されている場合
  522.             }else{
  523.                 filename=text;
  524.                 filename=filename.split("/");
  525.                 filename=filename[filename.length-1];
  526.                 //XMLファイルを指定しない、エラーメッセージを表示
  527.                 if(filename == "" && flag == "XMLFile"){
  528.                    writeResult(ErrorFont + fileName + "のパス:" + text + FontClose + "<br>");
  529.                     writeResult(ErrorFont + nodename + messEroorNode);
  530.                     writeResult(fileName + "のパスを正しく指定してください。<br>");
  531.                     writeResult(FontClose);
  532.                 //設定値が正しい、パスをを表示
  533.                 } else {
  534.                     writeResult(messOK);
  535.                     writeResult(OKFont + fileName + "のパス:"+text+ FontClose +"<br>");
  536.                 }
  537.             }
  538.         }
  539.     }
  540. }
  541.  
  542. //言語設定ファイルのLangCodesの値をチェック
  543. function chkLangCodes(nodename){
  544.  
  545.     var subnode;
  546.     var nodes;
  547.     var i;
  548.     var text;
  549.  
  550.     if(chkLangHasNode(nodename)){
  551.         writeResult(messOK);
  552.         writeResult("------LangSettings/LangCodes/LangAttr要素チェック------<br>");
  553.         //該当ノードのサブノード情報を取得
  554.         subnode = "LangSettings/LangCodes/LangAttr";
  555.         if(chkLangHasNode(subnode)){
  556.             try{
  557.                 // 2012/02/14 V2.7 teihin v0207-07-9 -s
  558.                 // nodes = LANGSETTING.XMLDocument.selectNodes(subnode);
  559.                 nodes = xmlDocLangsetting.selectNodes(subnode);
  560.                 // 2012/02/14 V2.7 teihin v0207-07-9 -e
  561.                 for(i=0;i<nodes.length;i++){
  562.                    text = nodes.item(i).text;
  563.                    //言語コードが空白の場合。エラー
  564.                    if(text==""){
  565.                        writeResult(ErrorFont+subnode+messEmptyNode);
  566.                        writeResult("言語コードを指定してください。<br>");
  567.                         writeResult(FontClose);
  568.                     } else {
  569.                         writeResult(OKFont + "言語コード" + (i+1) + ":" + text + FontClose + "<br>");
  570.                     }
  571.                    
  572.                 }
  573.                 writeResult(OKFont+"      計:" + i + "言語コード "+ FontClose + "<br>");
  574.             }catch(e){    
  575.                 writeResult(ErrorFont + nodename+messCantGetText+FontClose + "<br>");
  576.                 writeResult(messPleaseCheckLangXML);
  577.             }
  578.         }
  579.     }
  580. }
  581.  
  582. function chklaunchxml(){
  583.     //ブラウザチェック
  584.     if(chkBrowser()==false){
  585.         // 2008/12/13 jiaoyexin 2.19 -s
  586.         //writeResult(ErrorFont + "WindowsのIE5.5SP2~7.0で利用してください<br>Windows Vistaでは利用できません"+FontClose);
  587.         //2010/02/10 baojiawei ZSIE8-01-032-003 (2.1) -s
  588.         //writeResult(ErrorFont + "WindowsのIE5.5SP2~7.0で利用してください"+FontClose);
  589.         // 2012/02/15 V2.7 teihin v0207-05-5 -s
  590.         //writeResult(ErrorFont + "WindowsのIE5.5SP2~8.0で利用してください"+FontClose);
  591.         // 2013/05/28 V2.9 zhang v0209-01-3(1) -s
  592.         //writeResult(ErrorFont + "WindowsのIE5.5SP2~9.0で利用してください"+FontClose);
  593.         writeResult(ErrorFont + "WindowsのIE7~10.0で利用してください"+FontClose);
  594.         // 2013/05/28 V2.9 zhang v0209-01-3(1) -e
  595.         // 2012/02/15 V2.7 teihin v0207-05-5 -e
  596.         //2010/02/10 baojiawei ZSIE8-01-032-003 (2.1) -e
  597.         // 2008/12/13 jiaoyexin 2.19 -e
  598.         return;
  599.     }
  600.     var nodename;
  601.     var text;
  602.     var m;
  603.     var IsGetNode=false;
  604.    
  605.     //launchsettingファイルチェック
  606.     writeResult("------LaunchSettings要素チェック------<br>");
  607.     nodename = "LaunchSettings";
  608.     if(chkHasNode(nodename)){
  609.         writeResult(messOK);
  610.         writeResult("------LaunchSettings/Launch要素チェック------<br>");
  611.         nodename = "LaunchSettings/Launch";
  612.         if(chkHasNode(nodename)){
  613.             // 2012/02/14 V2.7 teihin v0207-07-10 -s
  614.             // node = LAUNCHSETTING.XMLDocument.selectSingleNode(nodename);
  615.             node = xmlDocLaunchsetting.selectSingleNode(nodename);
  616.             // 2012/02/14 V2.7 teihin v0207-07-10 -e
  617.             try{
  618.                 var launchType = node.attributes.getNamedItem("type").value;
  619.                 //空白の場合、エラーとする
  620.                 if(launchType==""){
  621.                     writeResult(ErrorFont + "type" + messProperty + messEmptyNode);
  622.                     writeResult(messTypeProperty);
  623.                     writeResult(FontClose);    
  624.                    
  625.                 }else{
  626.                     //指定値以外の場合、エラーとする
  627.                     if(launchType!="Navigate" && launchType!="FirstNavi"){
  628.                        writeResult(ErrorFont + "type" + messProperty + messEroorNode);
  629.                         writeResult(messTypeProperty);
  630.                         writeResult(FontClose);
  631.                     }else{    
  632.                         writeResult(messOK);
  633.                         writeResult(OKFont + "起動タイプ:" + launchType + FontClose + "<br>");
  634.                     }
  635.                 }
  636.             } catch(e){
  637.                 writeResult(ErrorFont);
  638.                 writeResult(ErrorFont + "type" + messProperty + messCantGetText + FontClose);
  639.                 writeResult(FontClose);
  640.                
  641.                 writeResult(messPleaseCheckXML);
  642.             }
  643.  
  644.             writeResult("------LaunchSettings/Launch/InstallPath要素チェック------<br>");
  645.             IsGetNode=false;
  646.             nodename = "LaunchSettings/Launch/InstallPath";
  647.             if(chkHasNode(nodename)){
  648.                 // 2012/02/14 V2.7 teihin v0207-07-10 -s
  649.                 // node = LAUNCHSETTING.XMLDocument.selectSingleNode(nodename);
  650.                 node = xmlDocLaunchsetting.selectSingleNode(nodename);
  651.                 // 2012/02/14 V2.7 teihin v0207-07-10 -e
  652.                 try{
  653.                     text = node.text;
  654.                     IsGetNode=true;
  655.                 }catch(e){    
  656.                     writeResult(ErrorFont + nodename+messCantGetText+FontClose);
  657.                     writeResult(messPleaseCheckXML);
  658.                 }
  659.                 if(IsGetNode){
  660.                     //空白の場合、エラーとする
  661.                     if(text==""){
  662.                         writeResult(ErrorFont+nodename+messEmptyNode);
  663.                         writeResult("インストールパスを指定してください。<br>");
  664.                         writeResult(FontClose);
  665.                     //最後文字は「/」以外の場合、エラーとする
  666.                     }else if(text.charAt(text.length-1)!="/"){
  667.                         writeResult(ErrorFont + nodename+messEroorNode);
  668.                         writeResult(messEroorNode3);
  669.                         writeResult(FontClose);
  670.                     }else{
  671.                         writeResult(messOK);
  672.                         writeResult(OKFont + "インストールパス:" + text + FontClose + "<br>");
  673.                     }
  674.                 }
  675.             }    
  676.         }
  677.  
  678.         writeResult("------LaunchSettings/SupportLang要素チェック------<br>");
  679.         nodename = "LaunchSettings/SupportLang";
  680.         chkLangSupport(nodename);
  681.  
  682.         writeResult("------LaunchSettings/UsefulRange要素チェック------<br>");
  683.         nodename = "LaunchSettings/UsefulRange";
  684.         if(chkHasNode(nodename)){
  685.             writeResult(messOK);
  686.             writeResult("------LaunchSettings/UsefulRange/Domain要素チェック------<br>");
  687.             nodename = "LaunchSettings/UsefulRange/Domain";
  688.             if(chkHasNode(nodename)){
  689.                 try{
  690.                     // 2012/02/14 V2.7 teihin v0207-07-10 -s
  691.                     // nodes = LAUNCHSETTING.XMLDocument.selectNodes(nodename);
  692.                     nodes = xmlDocLaunchsetting.selectNodes(nodename);
  693.                     // 2012/02/14 V2.7 teihin v0207-07-10 -e
  694.                     var tagFontColor = OKFont;
  695.                     for(i=0;i<nodes.length;i++){
  696.                        if(i>=MAX_DOMAIN_NO){
  697.                             tagFontColor = ErrorFont;
  698.                         }
  699.                         for(j=0;j<1000;j++){}
  700.                        //空白の場合、エラーメッセージを表示する
  701.                        if(nodes.item(i).text==""){
  702.                            writeResult(ErrorFont+nodename+ messEmptyNode);
  703.                            writeResult("有効ドメインを指定してください。" + FontClose+ "<br>");
  704.                         } else {
  705.                             writeResult(tagFontColor+"有効ドメイン"+(i+1)+":"+nodes.item(i).text + FontClose + "<br>");
  706.                         }
  707.  
  708.                     }
  709.                     writeResult(tagFontColor+"      計:"+i+"ドメイン" + FontClose + "<br>");
  710.                     if(nodes.length>MAX_DOMAIN_NO){
  711.                         writeResult(tagFontColor+"登録できる有効ドメイン数("+MAX_DOMAIN_NO+")を超えています。" + FontClose + "<br>");
  712.                     }
  713.                 }catch(e){
  714.                     writeResult(ErrorFont + nodename+messCantGetText + FontClose);
  715.                     writeResult(messPleaseCheckXML);
  716.                 }
  717.             }    
  718.          }
  719.  
  720.         //起動設定ファイルに指定された言語ファイルをチェックする
  721.         nodename = "LaunchSettings/SupportLang";
  722.         chkLangXMLFile(nodename);
  723.  
  724.     }
  725. }
  726.  
  727. function startCheck(){
  728. resultDiv.innerHTML="";
  729.  if(window.location.protocol=='file:'){
  730.         chklaunchxml();
  731.  }else{
  732.         writeResult(ErrorFont+"このXMLチェックツールはローカルで実行してください。" + FontClose+ "<br>");
  733.  }
  734. }
  735.  
  736. function writeResult(html){
  737.         resultDiv.innerHTML += html;
  738. }
  739. </head>
  740. <button onclick='startCheck()'>チェック実行</button>
  741. <script language="JavaScript" type="text/JavaScript">
  742. <p><font color="#FF0000">JavaScriptが無効になっています。<br>
  743.   JavaScriptを有効にしてから実行してください。</font></p>
  744. <div id="resultDiv"></div>
  745. </body>
  746. </html>

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.