Valider un XML sans schéma

Résolu
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007 - 20 oct. 2006 à 11:58
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007 - 20 oct. 2006 à 17:21
Bonjour à tous,

Une petite question côté XML....
J'utilise un fichier XML sur lequel je m'appui pour dessiner une arborescence à l'aide du contrôle TreeView..L'utilisateur peut modifier cette arborescence via mon appli .Net.
Cependant je n'utilise pas de schéma XSD et j'ai donc un problème de validation, lorsque l'utilisateur entre dans un textbox le nom du nouvel élément à ajouter.
 newElement = objXMLDataDoc.CreateElement(TxtFolder.Text)

Bref si l'utilisateur entre un nom qui ne respecte pas la norme XML, une exception est générée : Normal
Pour contrer cela, j'imagine avoir deux solutions :
    -Schéma XSD (je ne maîtrise pas du tout dans le sens où ma structure est dynamique)
    -Expression régulière sur la saisie (maîtrise pas non plus, surtout pour définr un standart xml)

Quelqu'un peut-il m'aider ???
Merci !

10 réponses

slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
20 oct. 2006 à 17:21
J'avais pas penser au moteur du navigateur....
Tous mes test sont effectués avec FireFox. J'ai un peu oublié IE....
Mais si çà marche avec IE et pas Firefox, çà ne me va pas, donc j'oubli ce composant....
Merci pour tout et bon week-end...
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 oct. 2006 à 12:44
Bonjour,

qu'appelle tu un nom qui ne resepecte pas la norme XML ? Tu peux saisir n'importe quelle noeud XML la seule contrainte est qu'il porte un nom correcte, pas d'espace pas de caractère à la con etc ... ?
Dans ce cas les schémas XSD ne sont pas adapté, les regexp est la meilleure solution. Moi non plus j'aime pas les regexp mais je dirais

Regex.Match("lachaine", @"^\w+$").Success

Ca devrait accepter tout sauf les caractère spéciaux par contre je pense que ca laisse passer les accents mais pas les tirets ..

<hr />Cyril - MVS - MCP
0
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
20 oct. 2006 à 13:31
J'osais pas en demander tant !!!
Va falloir que je me penche sur la syntaxe des expressions régulières pour l'adapter au ptit oignons....
Merci !
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 oct. 2006 à 13:48
j'ai oublié de te donner l'adresse de l'indispensable www.regexlib.com peut etre que tu trouveras ton bonheur mais c'est une regexp vraiment trés simple que tu as besoin :-)

<hr />Cyril - MVS - MCP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
20 oct. 2006 à 15:59
Merci pour toutes ces infos !!!!
Une tite dernière pour la route ?!

Pour le Xml si je tiens compte que
Un nom d'élément ou de noeud
    - Ne doit pas commencer par un chiffre
    - Aucun espace
    - Pas de caractères spéciaux type @...

j'ai traduit çà (avec tes infos) par  "^([^0-9\s])[a-zA-Z0-9_]+"
Après quelques tests rapide çà a l'air de convenir, mais peut-être ai-je oublié quelque-chose ?
ps : Je ne demande pas une correction, mais vu que tu à l'air calé, je me dis que en un bref coup d'oeil, si il y a quelque chose de choquant dans mon RegEx....

Encore une fois merci !
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 oct. 2006 à 16:17
J'aime pas les Regexp ! et je suis trés mauvais aussi, mais ca semble correct, les accents passent par contre non ? c'est peut etre pas dérangeant :-)

<hr />Cyril - MVS - MCP
0
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
20 oct. 2006 à 16:33
Si pour le "valideur XML" de .net les accents ne sont pas un problème, alors pour moi non plus.....
Par contre j'ai encore un problème mais qui est lié à VS 2005....
Si dans mon Code-Behind je test le nom via ce que tu m'a appris "Regex.Match", oki çà roule bien, mon RegEx à l'air d'être correct.
Par contre si pour éviter un Post inutile, je m'appuis sur le composant "RegularExpressionValidator",  il bloque tout si je met un caractère accentué en dehors de la première position ??!!!! . Po normal çà !!!!
Et c'est là que çà m'emmerde, parce-qu'il va falloir que je le fasse en javascript, j'imagine ?! Et comme pour les RegEx, j'ai horreur du javascript .
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 oct. 2006 à 16:45
le composant RegularExpressionValidator génére du JavaScript, quand tu dis il bloque tout c'est à dire ? il ne laisse pas passer les accents ? est-ce rééllement un problème ? ou alors ca plante la page ?

<hr />Cyril - MVS - MCP
0
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
20 oct. 2006 à 16:54
Non en gros il fonctionne, mais bizarrement.

Avec le RegEx définit plus haut il va laisser passer quelque-chose du genre:
"éalbert32"
mais par contre
"alberté32" ne passera pas.

En fait le caractère accentué est accepté seulement si il est en première position !!!
Suis po un AS du développement, mais là quand même çà sent le bug....
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 oct. 2006 à 17:08
C'est pas trés déreangeant mais c'est quand meme bizarre. L'interpreteur Javascript d'IE et celui de .net ne sont pas les memes ca doit surement venir de là, d'autres part je ne sais pas comment ils gèrent les accents en JavaScript peut être qu'ils sont encodé différement et du coup ca merdote :-/

Essaye avec Firefox pour voir si t'as le meme résultat.

<hr />Cyril - MVS - MCP
0
Rejoignez-nous