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

XML/XSL et SOAP Discussion :

Schéma xml : erreur lors de vérification, problème de nameSpace.


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Schéma xml : erreur lors de vérification, problème de nameSpace.
    Bonjour à tous,
    Promis j'arrête de vous embêter après (sur ce projet en tout cas) !
    J'utilise xslt pour rajouter des éléments dans un schéma, notamment pour créer une nouvelle balise balisesXrm, utilisée devant chaque autres éléments, comme vous pouvez le voir ici :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SCCOAMCD="urn:SCCOA-schemaInfo" SCCOAMCD:desc="  implémentation du MCD " attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:SBEGestionZonesAeriennesSYSCA-schema" version="3.2.1ec">
     
       <xsd:element name="balisesXrmType">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element name="balisesXrm:attribut"/>
                <xsd:element name="balisesXrm:variable"/>
                <xsd:element name="balisesXrm:param"/>
                <xsd:element name="balisesXrm:java"/>
                <xsd:element name="balisesXrm:historisation-date"/>
                <xsd:any minOccurs="0"/>
             </xsd:sequence>
          </xsd:complexType>
       </xsd:element>
     
    <xsd:complexType xmlns="urn:SBEGestionZonesAeriennesSYSCA-schema" xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema" SCCOAMCD:desc="Une caractéristique intangible d'intérêt militaire qui est spécifiée administrativement, peut être représentée par une figure géométrique, et est associée à la conduite des opérations militaires" SCCOAMCD:entite="A-SC.ElementControle" name="ElementControle">
     
          <xsd:sequence>
     
             <xsd:element name="balisesXrm" type="balisesXrmType"/>
             <xsd:element maxOccurs="unbounded" ref="attributsXrm" SCCOAMCD:desc="a_pour_etat" SCCOAMCD:relation="A-SC.ElementControle,EtatEltControle" minOccurs="1" name="a_pour_etat" type="SBEGestionZonesAeriennesSYSCA:EtatEltControle"/>
     
          </xsd:sequence>
     
       </xsd:complexType>
     
       <xsd:complexType xmlns="urn:SBEGestionZonesAeriennesSYSCA-schema" xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema" SCCOAMCD:desc="Etat" SCCOAMCD:entite="A-SC.Etat" name="Etat">
     
          <xsd:sequence>
     
             <xsd:element name="balisesXrm" type="balisesXrmType"/>
             <xsd:element maxOccurs="unbounded" ref="attributsXrm" SCCOAMCD:attribut="A-SC.Etat.Commentaires" SCCOAMCD:desc="Commentaires" minOccurs="0" name="commentaires" type="SBEGestionZonesAeriennesSYSCA:typeDatatypeChaine1a2000"/>
     
             <xsd:element name="balisesXrm" type="balisesXrmType"/>
             <xsd:element maxOccurs="unbounded" ref="attributsXrm" SCCOAMCD:attribut="A-SC.Etat.GdhDebut" SCCOAMCD:desc="Date validité" minOccurs="1" name="gdhDebut" type="typeDTG"/>
     
             <xsd:element name="balisesXrm" type="balisesXrmType"/>
             <xsd:element maxOccurs="unbounded" ref="attributsXrm" SCCOAMCD:attribut="A-SC.Etat.GdhFin" SCCOAMCD:desc="retour opérationnel" minOccurs="0" name="gdhFin" type="typeDTG"/>
     
          </xsd:sequence>
     
       </xsd:complexType>
    Pour autant, lorsque j'essaie de valider mon document XML, l'erreur suivante apparait :
    Error Resolving Component 'balisesXrmType'. It Was Detected That 'balisesXrmType' Has No Namespace, But Components With No Target Namespace Are Not Referenceable From Schema Document 'null'. If 'balisesXrmType' Is Intended To Have A Namespace, Perhaps A Prefix Needs To Be Provided. If It Is Intended That 'balisesXrmType' Has No Namespace, Then An 'import' Without A "namespace" Attribute Should Be Added To 'null'.

    J'ai essayé de rajouter manuellement au targetNamespace de mon document une balise : xmlns:prefix="urn:SBEGestionZonesAeriennesSYSCA-schema" et de modifier ma balisesXrmType par prefix:balisesXrmType sans succès (l'erreur qui apparait est Src-resolve: Cannot Resolve The Name 'prefix:balisesXrmType' To A(n) 'type Definition' Component).

    L'objectif était juste de créer un complexType dont je pourrais me resservir partout, est-ce une mauvaise solution ? Ou probablement : l'ai-je mal fait ?

    Merci d'avance pour vos réponses.

  2. #2
    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
    Je vois que vous aurez un très gros problème pour réussir de faire ça. Le schéma préliminaire est tellement faux que vous ne rendez pas compte l'ampleur ! Voici quelques remarques.

    [1] exemples typiques
    xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema"
    Voyons, on ne fait pas un préfix de namespace aussi compliqué à lire avec une longeur comparable à l'uri de namespace lui-même. Le préfix c'est pour rendre le namespace uri plus lisible et plus simple pour que la pensée abstract se fait face à moins d'obstacle non-essentielle. On ne met pas partout force=masse x accélération, on met plus simplement f=ma. L'avis dans certains domaines de programmation dit de mettre le nom de variable plus de sens compréhensible ne s'applique pas tout-à-fait à tout. Je dirais, choisir les préfixes plus courts et en fin de compte, ce sont juste des symboles.

    [2]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       <xsd:element name="balisesXrmType">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element name="balisesXrm:attribut"/>
                <xsd:element name="balisesXrm:variable"/>
                <xsd:element name="balisesXrm:param"/>
                <xsd:element name="balisesXrm:java"/>
                <xsd:element name="balisesXrm:historisation-date"/>
                <xsd:any minOccurs="0"/>
             </xsd:sequence>
          </xsd:complexType>
       </xsd:element>
    Un peu intuitivement, je comprends ce que vous voulez dire. Mais c'est très fausse comme écriture xsd.

    [2.1] Question: l'élément balisesXrmType, dans quel namespace voulez-vous qu'il vit ? Dans cette écriture il vit dans le namespace urn:SBEGestionZonesAeriennesSYSCA-schema. C'est ça que vous le concevez?

    [2.2] Que voulez-vous dire le préfix balisesXrm? C'est défini nulle part. Ce n'est pas que un préfix soit dedans les parenthèses qu'on le moteur le laisse libre à interprétation. Et en plus cette écriture
    <xsd:element name="balisesXrm:attribut"/>
    qui semble innocent est absolument fausse. Je peux vous explique: le type de nom (name) est xs:NCName. Ce n'est pas n'importe quoi; c'est un nom sans colons. Puisque cet élément est soit dans le même targetNamespace que le schéma défini et elementFormDefault="qualified', soit dans le namespace nulle si elementFormDefault="unqualified". Jamais un nom avec préfix, donc un colon, n'est acceptable. Jamais, 100%.

    Si ce sont dans un namespace préfixé baliseXrm tiers, il faut mettre, au lieu de nom, ref. Et là on peut mettre un nom qualifié...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       <xsd:element name="balisesXrmType">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element ref="balisesXrm:attribut"/>
                <xsd:element ref="balisesXrm:variable"/>
                <xsd:element ref="balisesXrm:param"/>
                <xsd:element ref="balisesXrm:java"/>
                <xsd:element ref="balisesXrm:historisation-date"/>
                <xsd:any minOccurs="0"/>
             </xsd:sequence>
          </xsd:complexType>
       </xsd:element>
    Et il faut avoir une ligne de xs:import pour indique le schéma pour balisesXrm comme préfix. Et c'est aussi quelque part le message d'erreur semble suggerer de ne pas trouver...

    [3]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="balisesXrm" type="balisesXrmType"/>
    Vous avez mis un xsd:element name="balisesXrmType" desus. Mais cette ligne besoins une définition comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsd:complexType name="balisesXrmType">
        <!-- etc etc -->
    </xsd:complexType>
    Où est-il ?

    [4] exemple typique (je mets quelques line-breaks)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsd:element maxOccurs="unbounded" 
        ref="attributsXrm" 
        SCCOAMCD:attribut="A-SC.Etat.Commentaires" 
        SCCOAMCD:desc="Commentaires"
        minOccurs="0"
        name="commentaires"
        type="SBEGestionZonesAeriennesSYSCA:typeDatatypeChaine1a2000"/>
    A part qu'on ne sait pas quoi attributsXrm, ceci n'est pas acceptable, à jamais, et rends le schéma inutil puisque invalidé lui-même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsd:element maxOccurs="unbounded" 
        ref="attributsXrm" 
        name="commentaires"
        type="SBEGestionZonesAeriennesSYSCA:typeDatatypeChaine1a2000"/>
    Soit vous réferez certain élément global ref="attributsXrm" période, soit vous mettez son nom et son type.

    Voilà, pas encore fini mais déjà trop fatiguant.

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

Discussions similaires

  1. [XML] Génération fichier XML pour RSS via PHP, problème lors de l'écriture
    Par gator dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 04/02/2012, 19h17
  2. (web.xml) Erreur lors du déploiement dans GlassFish
    Par the watcher dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 26/08/2011, 14h05
  3. [AC-2003] Pas de message d'erreur lors d'un problème VBA
    Par falcon dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/10/2009, 22h29
  4. Réponses: 2
    Dernier message: 29/08/2008, 23h51
  5. [DOM] Erreur lors du parsing d'un fichier XML par l'API DOM
    Par patricetoan dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/09/2005, 13h43

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