xml schema : une balise et des attributs

xml schema : une balise et des attributs - XML/XSL - Programmation

Marsh Posté le 14-05-2006 à 17:14:57    

Bon voilà je voudrais en fait faire un schema de ça :
 

Code :
  1. <blabla attr1="monAttribut>
  2.    theBlabla
  3. </blabla>


 
ça peut paraître simple mais en fait j'arrive pas à dire au schema que je veux mettre du texte entre la balise blabla (mettre l'attribut ça va).
 
Si quelqu'un pouvait m'aider ?

Reply

Marsh Posté le 14-05-2006 à 17:14:57   

Reply

Marsh Posté le 14-05-2006 à 19:27:21    

Faut faire comme ça :

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
    <xs:element name="blabla">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="monAttribut" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
 
</xs:schema>


 
Et ça valide donc ça :

<?xml version="1.0" encoding="utf-8" ?>
<blabla monAttribut="pouet"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="test.xsd">
 theBlabla
</blabla>


 
Explication :
T'as déjà donc un complexType (pour avoir un attribut faut donc un complexType, tu devrais le savoir vu que t'as réussi à définir l'attribut :) ). Ensuite, pour indiquer que le contenu de l'élément ne contient que du texte, et pas d'autres éléments, on rajoute un simpleContent. Ensuite comme tu veux du texte, on va dériver le type de base xs:string, dérivation qui va rajouter l'attribut désiré. Comme c'est une extension du type xs:string, on utilise xs:extension

Reply

Marsh Posté le 14-05-2006 à 19:28:38    

On remarque aussi que les schémas XML deviennent très vite lourdingues :D C'est pour ça que pour des schémas simples, si le parser l'authorise, on se tournera vers Relax NG qui est plus simple (mais parfois évidemment plus limité, tout dépend du schéma)

Reply

Marsh Posté le 15-05-2006 à 10:23:44    

oui j'ai remarqué que ça devient vite lourd. On a commencé par apprendre les DTD puis ensuite les schemas et même si les schemas sont plus puissant à priori (on a pas vraiment étudier en détail) je trouve qu'un petit DTD de10 lignes c'est plus simple qu'un schema de 20 lignes!
Merci FlorentG pour la réponse ça devrait servir pour mon exam :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed