p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    août 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : août 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut Règle sur présence d'un élément

    Salut tous,

    Je cherche une solution pour définir la des règles sur le présence d'une balise. On peut utiliser nillable ou minOccurs pour définir si une balise peut ne pas être présente, mais comment définir des règles indiquant dans quel cas la balise doit être là ou pas ?

    Mon cas de règles est assez simple puisque j'aimerais définir pour chaque balise un niveau de droit qui correspond au rôle de l'utilisateur. Par exemple, j'aimerais définir que la balise my-tag est accessible à super-admin et pas à admin et other-tag accessible à admin et user.

    Comment feriez-vous ? J'ai pensé aux solutions suivantes :
    - Ajouter un attribut à tous mes éléments. Mais la valeur de l'attribut va se retrouvé dans le XML alors que je n'en ai pas besoin. C'est juste celui qui génère le document XML qui doit respecter ces règles, après on en a plus besoin
    - Ajouter cette règle en commentaire de mon élément mais ce n'est pas très formel
    - Modifier le schéma de XSD pour pouvoir ajouter un attribut comparable à nillable. Mais est-ce possible de modifier le schéma du schéma standard W3C ? Et quelle sont les conséquences ?

  2. #2
    Modérateur

    Inscrit en
    septembre 2004
    Messages
    10 368
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 10 368
    Points : 17 293
    Points
    17 293

    Par défaut

    Citation Envoyé par Neajo Voir le message
    Je cherche une solution pour définir la des règles sur le présence d'une balise. On peut utiliser nillable ou minOccurs pour définir si une balise peut ne pas être présente, mais comment définir des règles indiquant dans quel cas la balise doit être là ou pas ?
    Avec XML Schema on peut pas. Si on définit un élément quelque part, c'est qu'il a le droit d'être là, point.

    Mais il y a des techniques. Par exemple, si deux éléments différents, <user> et <admin>, ont des contenus similaires mais pas tout à fait identiques, on peut définir l'un comme étant une extension ou restriction de l'autre.

    Pour un besoin comme le tien, c'est un besoin sémantique. "Tel genre de users a une gestion de droits, mais pas tel autre."
    La sémantique c'est pas le boulot de XML Schema, il n'est pas prévu pour et quand on le tord pour qu'il le fasse, il le fait mal.
    XML Schema est là pour vérifier la grammaire, et seulement ça : les éléments s'emboîtent les uns les autres correctement.

    En principe tu n'as donc pas vraiment le choix : c'est le programme générateur, et rien d'autre, qui décide si un élément a le droit d'être là ou non. Les autres programmes peuvent très bien décider de vérifier aussi de leur côté, avant de faire un autre traitement.

  3. #3
    Invité de passage
    Inscrit en
    août 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : août 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Merci de ta réponse.

    Il va falloir que je trouve la moins pire des solutions pour réussir à garder une consistance entre le schéma et ces règles puisque je ne peux pas les mettre dedans.

Discussions similaires

  1. [PMD] Règle sur l'utisation de final
    Par nono_31 dans le forum Langage
    Réponses: 5
    Dernier message: 30/11/2007, 21h11
  2. regex sur présence d'une apostrophe
    Par Pitou5464 dans le forum Regex
    Réponses: 3
    Dernier message: 30/08/2007, 11h19
  3. Réponses: 3
    Dernier message: 11/05/2007, 16h27
  4. [XSD] Présence d'un élément dépendant d'un autre
    Par be_tnt dans le forum Valider
    Réponses: 2
    Dernier message: 14/03/2007, 15h00
  5. Règle sur les Index
    Par dorian53 dans le forum Administration
    Réponses: 31
    Dernier message: 03/11/2006, 07h37

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