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] : Garder les espaces dans un champ string


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut [XSD] : Garder les espaces dans un champ string
    Bonjour

    J'aimerais dans un schéma, garder les espaces dans les champs de type string.
    Si j'ajoute : xml:space="preserve" dans mon fichier XML sur l'élément 'root', j'ai une erreur :
    'space on this element is not defined in the schema.

    Que dois-je ajouter dans le schéma pour garder les espaces et ne plus avoir d'erreur ?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Pas d'idée ?

  3. #3
    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
    Bonjour,

    en principe en utilisant xs:string comme type dans le schéma les espaces devraient être autorisés...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    J'ai toujours l'erreur.
    Voila le début de mon schéma :

    <?xml version="1.0" encoding="Windows-1252"?>
    <xsd:schema xmlnssd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="SkippageData">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="SkippageCGA" minOccurs="0" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:all>
    <xsd:element name="cod_agent" minOccurs="0" nillable="true">
    <xsd:simpleType>
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="5"/>
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:element>

    et le début de mon XML :
    <?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
    <SkippageData xml:space="preserve" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="skippagecga.xsd">
    <SkippageCGA>
    <cod_agent> 431 </cod_agent>

    Et j'ai l'erreur :
    The attribut 'space' on this element is not defined in the schema (line 2, pos 138)

    Je ne vois pas pourquoi...

  5. #5
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Pourquoi vouloir mettre xml:space="preserve" dans votre xml !

    Les type string garde l'espacement par défaut!

    Si vous enlever xml:space votre xml sera alors validé par le schéma!

    Si vous voulez le laisez il faut modifier votre schéma pour qu'il accepte le xml:space!

    ++

    Thierry

  6. #6
    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
    Le message d'erreur était coupé dans ton premier post, c'est pour cela que j'ai répondu à côté ; en fait, pour le schéma, xml:space est un attribut comme un autre, et il faut donc qu'il soit explicitement déclaré dans ton schéma pour que l'instance XML soit validée.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Bonjour

    Virgul : Je crée le fichier XML à partir d'une table. Si je n'indique pas à mon parser (c'est comme ça qu'on dit ?) de garder les espaces (PreserveWhiteSpace = true), je perd les espaces lors de la création de l'XML. Par contre, le parser m'ajoute 'xml:space= "preserve"' qui gère le message d'erreur lors de la lecture du fichier.

    GrandFather : comment déclarer l'attribut 'space' au XSD ?

    Merci pour votre aide.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    J'ai ajouté l'attribut suivant au schéma :
    <xsd:attribute name="space" default="preserve"/>

    mais j'ai toujours une erreur lors de la lecture du fichier XML:
    The complex type of element 'SkippageData' does not allow attribute 'xml:space' and no attribute wildcard matches it.

    Je coince...

  9. #9
    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
    Tu ne peux pas déclarer xml:space comme cela dans ton WXS, puisque l'attribut space appartient à l'espace de nom "http://www.w3.org/XML/1998/namespace". Il faut que cet espace de nom soit déclaré dans ton schéma. La marche à suivre est la suivante :

    1. Récupère le schéma créé par le W3C et qui contient la déclaration des éléments appartenant à cet espace de noms (xml:space, xml:base, xml:lang) à cette adresse : http://www.w3.org/2001/xml.xsd

    2. Importe ce schéma dans ton propre schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
    3. Tu peux ensuite utiliser les attributs spécifiques à XML dans ton schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsd:element name="SkippageCGA" minOccurs="0" maxOccurs="unbounded"> 
      <xsd:complexType> 
        ...
        <xsd:attribute ref="xml:space"/>
      </xsd:complexType>
    </xsd:element>

Discussions similaires

  1. Supprimer les espaces dans un champ
    Par leloup84 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 02/02/2009, 17h08
  2. Les espaces dans une String vers une <TextArea>
    Par loopx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 21/03/2008, 14h37
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. [VBA-A]Remplacer les espaces dans un champ texte
    Par Ericka dans le forum VBA Access
    Réponses: 6
    Dernier message: 17/05/2006, 15h31
  5. [HTML] formulaire gérer les espaces dans un champs texte
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 14h17

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