IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

xml dtd validator


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut xml dtd validator
    Le code du ci-dessous lorsque ça marche devrait me valider un document xml en prenant en compte son dtd, cela dit les liens qui doivent activé l'annulation ou la validation, ne marche pas... j'ai beau cherché mais je ne le trouve pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <html>
    	<head>	<title>Validateur de dtd</title>	</head>
    	<script>
    		var fenetreTransforme;
    		var validate = document.getElementById("Val");
    		var del = document.getElementById("Ann");
    		function valider(){
    			if((document.frmTransform.TxtXMLFileName.value).length == 0){
    				alert("Nom de fichier Invalide");
    				return;
    			}
    			var docXml = new ActiveXObject("Microsoft.XMLDOM");
    			docXml.validateOnParse = true;
    			docXml.load(document.frmTranform.TxtXMLFileName.value);
    			var erreur = docXml.parseError;
    			fenetreTransforme = window.open('transforme.html','_new','location=0,status=1,toolbar=0,menuBar=0,scrollBar=0,directories=0,resizable=0,width=600,height=600');
    			if(erreur!=""){
    				fenetreTransforme.document.write('<html><title>Validation par DTD</title><body><p><b>Erreur de Validation dans le document</b></p><br/>');
    				fenetreTransforme.document.write('<b>Erreur url :</b>'+ erreur.url + '<br/>');
    				fenetreTransforme.document.write('<b>Erreur ligne :</b>'+ erreur.line + '<br/>');
    				fenetreTransforme.document.write('<b>Erreur position :</b>'+ erreur.linepos + '<br/>');
    				fenetreTransforme.document.write('<b>Erreur raison :</b>'+ erreur.reason + '<br/>');
    				fenetreTransforme.document.write('</body></html>');
    			}
    			else{
    				fenetreTransforme.document.write('<html><title>Validation par DTD</title><body><p><b>Pas d erreur de Validation</b></p><br/>');
    			}
    		}
    		function annuler(){
    			document.frmTranform.TxtXMLFileName.value="";
    			if(!(typeof fenetreTransforme == "undefined"))
    				fenetreTransforme.close();
    		}
    		validate.onclick = valider();
    		del.onclick = annuler();
    	</script>
    	<body bgcolor="#6699C" text="#FFFFFF">
    		<p>&nbsp;</p>
    		<p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><b><u>XML - Module de Validation par DTD</u></b></font></p>
    		<p>&nbsp;</p>
    		<form name="frmTransform" method="post" action="">
    			<table width="75%" border="0" align="center">
    				<tr>
    					<td width="31%">
    						<div align="center"><b>Entrer le nom du fichier XML</b></div>
    					</td>
    					<td width="18%">
    						<input type="text" name="TxtXMLFileName"/>
    						<font face="Verdana, Arial, Helvetica, sans-serif"></font>
    					</td>
    					<td width="10%">
    						<font face="Verdana, Arial, Helvetica, sans-serif" size="2">
    							<a href="#" id="Val">Valider</a>
    						</font>
    					</td>
    					<td width="41%">
    						<font face="Verdana, Arial, Helvetica, sans-serif" size="2">
    							<a href="#" id="Ann">Annuler</a>
    						</font>
    					</td>
    				</tr>
    				<tr>
    					<td width="31%"></td>
    					<td colspan="3"></td>
    				</tr>
    				<tr>
    					<td colspan="4">
    						<div align="left"></div>
    						<div align="left"></div>
    					</td>
    				</tr>
    			</table>
    			<p>&nbsp;</p>
    			<p>&nbsp;</p>
    			<p>&nbsp;</p>
    			<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> </font></p>
    		</form>
    	</body>
    </html>
    Je soupsonne sois mon parser, ou bien la manière de gérer les évènement pour aller les fonctions annuler() valider()

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    D'abord, c'est un problème de html, javascript et activex (donc ie) avant tout. Il n'a aucun rapport avec java. Si les autres tolerent, je peux vous aider tout de même.

    Il y en a pleine d'erreurs, hélas. Je peux vous donner des indications en lisant de haut en bas.

    [1] ligne #2 C'est acceptable, mais je dirais il vaut mieux placer le bloc script dans la section head à côté de title aussi. En tout cas, ce n'est pas fatal.

    [2] lignes #5-#6 Là tout de suite c'est une erreur fatale. Le chargement de la page html est sérial. If ne faut référer un objet avant qu'il soit chargé. Il vaut mieux les placer dans un "handler" de window.onload. On va y revenir.

    [3] ligne #12 Microsoft.XMLDOM est un composant daté et remplacé par Msxml2.DOMDocument de diverses versions. Mais comme il continue d'être soutenu et largement installé, vous pouvez le laisser comme tel pour le moment sans trop compliquer l'issue.

    [4] ligne #13 Apart poser validateOnParse comme true, il faut tout de suite poser la propriété async comme false; sans ça, la fonctionalité sera erronée, donc, c'est une correction obligatoire et vitale.

    [5] ligne #14 Typo fatal.

    [6] ligne #16 Ce n'est pas la peine d'avoir une page transforme.html: vous allez réécrire la page de toute façon. Vous pouvez laisser comme vide '' pour le 1er paramètre. Mais, si vous insistez, vous pouvez le faire.

    [7] ligne #17 Comme ça, ce n'est pas très clair (vous pouvez le faire, si vous voulez), mais il vaut beaucoup mieux d'utiliser un critère plus clair et générique:
    erreur.errorCode!=0

    [8] lignes #18-23 et #26 Pour ce genre d'operation, il vaut beaucoup mieux de mettre document.open() et document.close() avant et après. En particulier, il est souvent vital d'en avoir .close().

    [edit] Pour éviter tout malentendu, ici, il va de soir, je veux dire fenetreTransforme.document.open() et fenetreTransforme.document.close() pour être plus précis. [/edit]

    [9] ligne #30 Typo fatal comme [5].

    [10] lignes #34-35 Alors là c'est carrément faux. Et puis le problème soulevé dans [2] devient lié aussi. Vous pouvez faire ça tout en enlevant les lignes de #4-5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    window.onload=function() {
        var validate = document.getElementById("Val");
        var del = document.getElementById("Ann");
        validate.onclick=valider;
        del.onclick=annuler;
    }
    [11] lign#41 Il vaut mieux stopper submit fonctionalité très clairement comme la forme a un seul élément du type text. C'est un lieu commun.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="frmTransform" method="post" action="" onsubmit="return false;">
    Voilà c'est en gros ce que je vois en lisant...

Discussions similaires

  1. [DTD]valider un fichier XML
    Par 18Marie dans le forum Valider
    Réponses: 1
    Dernier message: 26/06/2006, 00h05
  2. [dtd] .xml non valide
    Par SaintAmand dans le forum Valider
    Réponses: 3
    Dernier message: 20/02/2006, 14h54
  3. [SAX] Parser XML et validation avec dtd
    Par arno00020 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 22/11/2005, 17h30
  4. [DOM] XML et validation DTD
    Par getupa dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 18/11/2005, 15h05
  5. Validation d'un document XML / DTD
    Par chris_tal1 dans le forum Valider
    Réponses: 2
    Dernier message: 16/07/2004, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo