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] Utilisation de groupes de balises xhtml


Sujet :

Valider XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 36
    Points
    36
    Par défaut [XSD] Utilisation de groupes de balises xhtml
    Bonjour,

    Je suis confronté à un problème bizarre. Je veux indiquer qu'un élément de mon schema peut contenir un groupe de balises xhtml.

    En l'occurence le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      <xs:group name="fontstyle">
        <xs:choice>
          <xs:element ref="tt"/>
          <xs:element ref="i"/>
          <xs:element ref="b"/>
          <xs:element ref="big"/>
          <xs:element ref="small"/>
        </xs:choice>
      </xs:group>
    Ce groupe est tiré du schema xhtml strict suivant :
    http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd

    Pour indiquer que mon élément peut contenir ce groupe je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                <xsd:element name="titre">
                  <xsd:complexType>
                    <xsd:simpleContent>
                      <xsd:extension base="xsd:string">
                        <xsd:attribute name="blabla" type="xhtml:phrase"/>
                      </xsd:extension>
                    </xsd:simpleContent>
                  </xsd:complexType>
    Sans oublier l'import du schema xhtml au début de mon schema :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="utf-8" ?>
    <xsd:schema targetNamespace="http://www.chezmoi.org"
                    xmlns="http://www.chezmoi.org"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                    xmlns:xhtml="http://www.w3.org/1999/xhtml"
                    elementFormDefault="qualified">
      <xsd:import namespace="http://www.w3.org/1999/xhtml"
                    schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"/>
    à la validation j'obtiens ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reference to the undefined simple type: "phrase"
    Pour info je valide avec MSV un outil java.

    Si vous avez la moindre idée, n'hésitez pas

    Merci

  2. #2
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Un attribut ne peut contenir qu'un type simple; là tu essaies d'y mettre un type complexe (un element en l'occurence). Je pense que ton erreur viens de là.

    Cordialement,

    Phil

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    En remplaçant "bêtement" (je dis bêtement parce que j'avoue que je tatone en xml schema) la déclaration suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                <xsd:element name="titre">
                  <xsd:complexType>
                    <xsd:simpleContent>
                      <xsd:extension base="xsd:string">
                        <xsd:attribute name="blabla" type="xhtml:phrase"/>
                      </xsd:extension>
                    </xsd:simpleContent>
                  </xsd:complexType>
                </xsd:element>
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                <xsd:element name="titre">
                  <xsd:complexType>
                    <xsd:simpleContent>
                      <xsd:extension base="xsd:string">
                        <xsd:element name="blabla" type="xhtml:phrase"/>
                      </xsd:extension>
                    </xsd:simpleContent>
                  </xsd:complexType>
                </xsd:element>
    j'obtiens cette erreur :

    element "xsd:element" is not allowed here

    En fait j'avais mis "attribute" car je me suis inspiré de l'exemple suivant que j'ai trouvé dans la doc du W3C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <complexType name="PartsType">
      <sequence>
       <element name="part" maxOccurs="unbounded">
        <complexType>
         <simpleContent>
          <extension base="string">
           <attribute name="number" type="xipo:SKU"/>
          </extension>
         </simpleContent>
        </complexType>
       </element>
      </sequence>
     </complexType>
    J'avoue que je ne sais plus très bien quoi faire là ...

  4. #4
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Peux tu donner un exemple de ce que tu veux pouvoir écrire dans ton fichier XML. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <titre>
      <tt/> blablabla <i/> bliblibli <i/> blublublu
    </titre>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <titre>
      <tt>blablabla</tt>
      <i>blibli</i>
    </titre>
    Je pense pouvoir t'aider mais comme je ne connais pas le sens de ces elements, je ne sais pas comment tu compts les utiliser à l'interieur de "titre" (nombre d'occurrences, ordre, mixé avec du texte ou pas, etc.).

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    Je compte utiliser ces élements sans ordre particulier et que chacun de ces élements puissent être utilisé de 0 à n fois. Je pensais qu'en indiquant juste le groupe de balises défini dans le schema xml du xhtml strict cela se ferait sans soucis.

    J'envisage cette utilisation dans ma balise titre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <titre>
       <b>bla</b> blabla <i>blabla</i> blabla gfhfdghfg <b>ytut</b>
    </titre>
    Tous les éléments ne sont pas présents, et les ceux qui sont présents ne le sont pas dans le bon ordre.

    Merci de ton aide

  6. #6
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Si tu étudies un peu le schema XHTML que tu utilises ("xhtml1-strict.xsd"), tu verras qu'il n'y a pas de type correspondant à ce que tu veux faire (ils sont tous moins restrictif que le tien (par exemple, le type "inline" peut contenir non seulement tous les elements declarés dans "fonttype", mais aussi ceux du groupe "phrase", "special" et d'autres encore)).

    Donc tu dois definir un nouveau type qui utilise "fonttype", comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xs:element name="titre">
        <xs:complexType mixed="true">
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="fontstyle"/>
        </xs:complexType>
      </xs:element>
    Voili, voilu,

    Phil

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    Merci, tu es vraiment très fort

    Juste une dernière question sur ton bout de code.

    Tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:group minOccurs="0" maxOccurs="unbounded" ref="fontstyle"/>
    Ne faut il pas préciser :

    C'est juste pour comprendre, parce que les 2 formulations sont valides

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    hop hop hop

    En fait juste la formulation avec xtml:fontstyle passe, au temps pour moi

    Merci encore

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/10/2011, 12h01
  2. [XSLT] Utiliser des balises XHTML dans un fichier XML
    Par zoubidaman dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 20/03/2007, 14h30
  3. [XSD] Utiliser plusieurs schémas pour un XML
    Par baygz dans le forum Valider
    Réponses: 1
    Dernier message: 31/07/2006, 16h03
  4. [XHTML] Ne pas prendre en compte les balises XHTML
    Par simnitch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/08/2005, 15h58

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