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

Valider XML Discussion :

XSD : Validation d'une donnée


Sujet :

Valider XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Points : 23
    Points
    23
    Par défaut XSD : Validation d'une donnée
    Bonjour,
    Je voudrais valider une zone de texte en vérifiant qu(il n'y a ni espace en début de ligne , ni espace en fin de ligne.
    Ave cette expression j'arrive bien a tester en début de ligne mais rien en fin de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(\S([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|'| ]){1,70}\S)$
    Merci par avance a qui pourrait m'aider

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Faudrait donner des contre-exemples, parce que chez moi ta regex interdit bel et bien les espaces en début et en fin.
    Puisque \S en début et en fin exige qu'il y ait un caractères, n'importe quoi sauf un espace.


    Edit : au temps pour moi, j'avais pas copié le ^ et le $. Ils ne veulent rien dire en XSD, ils ont rien à faire là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Faudrait donner des contre-exemples, parce que chez moi ta regex interdit bel et bien les espaces en début et en fin.
    Puisque \S en début et en fin exige qu'il y ait un caractères, n'importe quoi sauf un espace.
    Voici l'exemple
    Il s'agit de tester dans un fichier xml qu'il n'y ait pas d'espace dans la balise xml ni au début ni à la fin de la donnée
    Lorsque je passe cet regexp dans NOTEPAD 2007 pas de problême mais dés que je passe en programmation avec les deux objets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set xmlDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
    	Set schemaCache = Server.CreateObject("Msxml2.XMLSchemaCache.6.0")
    à ce moment là le progamme me met chaque ligne en erreur
    Je ne sais pas si c'est suffisant pour toi comme contre exemple
    Apparement il semblerait que les caractéres $ et ^ ne soit pas interprétés par les XSD

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par loupat456 Voir le message
    Apparement il semblerait que les caractéres $ et ^ ne soit pas interprétés par les XSD
    Oui. Soit dit en passant, même s'ils étaient gérés par XSD, je vois pas pourquoi tu les aurais mis.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    As tu une idée du problême à l'origine de la non-validation ?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui. ^ et $, comme nous venons de le dire.

    Ils ne servent à rien dans le cas présent et n'existent pas en XSD. Le plus simple est de les enlever.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    En fait j'ai trouvé la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \S([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|'| ]){1,35}\S
    il suffisait de mettre \S devant et derriere le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ([A-Za-z0-9]|[\+|\?|/|\-|:|\(|\)|\.|,|'| ]){1,35}

  8. #8
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    As tu une idée du problême à l'origine de la non-validation ?
    D'abord w3c schema ne porte pas support qu'un sous-ensemble de regex au plein sens du terme pratiqué par la plupart des langages.

    En particulier, regex de w3c schema ne porte pas support d'"anchors" (^ et $); pourtant ils sont implicites et sont là pour toujours.

    Dans la partie II de la recommendation, il se dit le suivant.
    Note: Unlike some popular regular expression languages (including those defined by Perl and standard Unix utilities), the regular expression language defined here implicitly anchors all regular expressions at the head and tail, as the most common use of regular expressions in ·pattern· is to match entire literals.
    Or, en pratique, quand on a, par malheur ou par ignorance, mis des anchors dans la valeur, comment il se comporte?

    Prenons un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:pattern value="^TOTO$" />
    D'abord, le ^ au début va s'ignorer. Et puis le $ au dernière va se prendre comme le charactère litéral comme tel et il va verifier ceci:
    Qu'est-ce qu'il prend pour une texte comme ceci?
    La valeur sera comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:pattern value="\^TOTO$" />
    ou si on veut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:pattern value="\^TOTO\$" />
    C'est un peu abérrant, d'autant plus pour l'anchor ^ étant ignoré, mais pas l'anchor $.

    Mais en fin de compte, ça peut être assez dépendant du logiciel, en principe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/11/2007, 10h44
  2. Validation d'une Saisie de donnée dans une Table
    Par faressam dans le forum VBA Access
    Réponses: 10
    Dernier message: 14/09/2007, 18h02
  3. Validation XML avec un document XSD en utilisant une URL
    Par Foub dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 30/07/2007, 14h31
  4. Réponses: 7
    Dernier message: 18/04/2007, 15h54
  5. Récupération de données validées dans une pop-up
    Par hdd dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 16h47

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