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] où puis-je trouver des informations sur les xsd:pattern ?


Sujet :

Valider XML

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut [XSD] où puis-je trouver des informations sur les xsd:pattern ?
    bonjour à tous, j'ai un petit soucis de compréhension des XSD patterns.
    En effet, on a un XSD qui utilise des ID et des IDREF. Jusque là, rien de spécial. Maintenant, les ID doivent être du type NCNAME. Et voici la description du pattern pour le NCName


    Code xsd : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsd:simpleType name="NCName" id="NCName">
     <xsd:restriction base="xsd:Name">
     <xsd:pattern value="[\i-[:]][\c-[:]]*"/>
     </xsd:restriction>
    </xsd:simpleType>

    Mais ca veut dire quoi c'est \i et \c.
    Je suppose que \c veut dire caractère, mais quels genre de caractères (les accents avec, les_ # @ aussi, ou juste les 26 lettres de l'alphabets)
    Et quid du \i

    Je suppose aussi que -[:] veut dire qu'on exclut les deux-points.

    Vincent

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Salut,

    \i -> Tous les caractères pouvant être l'initiale d'un nom tel qu'il est défini dans la spéc XML 1.0, soit toutes les lettres, '_' et ':'.

    \c -> Tous les caractères pouvant composer un nom XML (sauf son initiale), c'est à dire tous les caractères désignés par \i, plus les chiffres, '.' et '-'.

    Effectivement, la notation -[] permet de faire la soustraction de deux ensembles de caractères, les ':' ne sont donc pas autorisés. \i, \c et -[] sont des extensions W3C aux expressions régulières PERL.

    Si on analyse ton pattern, on voit que le type simple dérivé de xsd:Name est en fait un nom (au sens XML) ne comprenant pas de ':'. Or, ce type existe déjà en tant que type prédéfini dans les W3C XML Schemas, et s'appelle... NCName (NonColonized Name) ! Sauf erreur de ma part, je ne vois donc pas l'intérêt d'une telle dérivation.

    [EDIT] je viens de comprendre : l'extrait de schéma que tu as donné provient du "schéma des schémas", c'est bien cela ? Dans ce cas, oublie ma dernière remarque.

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut
    En effet, c'est ça. J'ai donné un extrait du schéma des schémas. Et j'essaye de comprendre ce pattern pour le transposer en Java pour valider les entrées des utilisateurs.

    Tes explications m'ont bien aidées.

    Quelque part, je dois valider cela avec Java. Donc, il faudrait transposer ce XSD pattern en Java pattern. Ca va être chaud je pense.

    On va voir. Je vais encore chercher.

    merci.

    Vincent

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par vbrabant
    Quelque part, je dois valider cela avec Java. Donc, il faudrait transposer ce XSD pattern en Java pattern. Ca va être chaud je pense.
    Comme tu dis, ça va être chaud, il va falloir jongler avec les catégories Unicode...

    Si tu as la possibilité d'intervenir sur ton XSD, plutôt que d'utiliser des ID et des IDREF qui ne sont là que pour la compatibilité ascendante avec les DTD, pourquoi n'emploierais-tu pas à la place des xsd:key et xsd:keyref ? Ils servent également à l'intégrité référentielle, et n'ont pas les restrictions des ID/IDREF ; les clés peuvent être de n'importe quel type (pas cantonnées aux NCNames), et tu peux avoir des jeux de clés différents dans des sous-arbres distincts de l'instance XML. Un (court) tutoriel sur les key/keyref : http://www.w3.org/TR/xmlschema-0/#quartelyReport

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/11/2007, 13h36
  2. Recherche des informations sur les décompilateurs
    Par pieroznight dans le forum Outils
    Réponses: 4
    Dernier message: 28/09/2007, 17h14
  3. Réponses: 6
    Dernier message: 25/09/2007, 19h45
  4. Récupérer des informations sur les connexions réseau
    Par Leobaillard dans le forum Delphi
    Réponses: 8
    Dernier message: 31/08/2006, 01h20
  5. Réponses: 4
    Dernier message: 05/07/2006, 09h16

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