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] Ordre et occurence sur des balises importées et d'autres définies dans le XSD


Sujet :

Valider XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut [XSD] Ordre et occurence sur des balises importées et d'autres définies dans le XSD
    Bonjour tout le monde,

    Mon titre est un peu confus, mais j'ai du mal à trouver en peu de mots ce que je veux . Je précise cependant que je ne suis pas un fort en XML (je viens de commencer) et que j'ai déjà fait des recherches sur internet.

    Donc voilà, mon fichier XSD accepte actuellement un fichier XML possédant ce genre de structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <mw:master>
         <div><em>coucou</em></div>
         <contentplace name="test" />
    <mw:master>
    Tout ce qui n'est pas du namespace préfixé par 'mw' est du xHTML. Avec importation du bon XSD, j'ai réussi à lui faire valider le xHTML sans avoir à la réécrire, et j'ai présenté la balise racine '<master>' comme une extension de type 'Block' (comme l'est (<body> dans le XSD par exemple)) et je lui ai ajouté mon élement '<contentplace>' pour pouvoir faire ce genre de XML.


    Mon XSD :
    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
    <?xml version="1.0"?>
    <xs:schema	xmlns:xs="http://www.w3.org/2001/XMLSchema"
    			targetNamespace="http://www.me3w.fr/Namespace"
    			xmlns="http://www.me3w.fr/Namespace"
    			elementFormDefault="qualified"
    >
     
    	<!-- Import xHTML 1 Strict tags into code without redefining them	-->
    	<xs:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="xhtml1-strict.xsd"/>
     
        <xs:complexType name="contentplaceType">
        		<xs:attribute name="id" type="xs:string" />
        </xs:complexType>
     
        <!-- Only 'content' tags can be used has direct children elements of 'page' root element -->
     
        <xs:complexType name="rootType" xmlns="http://www.w3.org/1999/xhtml">
          <xs:complexContent>
            <xs:extension base="Block">
    			<xs:sequence>
    				<xs:element name="contentplace" type="contentplaceType" xmlns="http://www.me3w.fr/Namespace" />
    			</xs:sequence>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
     
        <xs:element name="master" type="rootType" />
     
    </xs:schema>
    L'ennui, avec cette façon de faire, c'est que je n'ai pas trouvé comment lui demander d'accepter n'importe quel ordre et occurence de ma balise '<contentplace>' et de balises xHTML, de cette manière :

    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <mw:master
    		xmlns:mw="http://www.me3w.fr/Namespace"
    		xmlns="http://www.w3.org/1999/xhtml"
    		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    		xsi:schemaLocation="http://www.me3w.fr/Namespace.php page.xsd">
     
    		<div style="background-color:green">My name is : </div>
     
    		<mw:contentplace id="foo1" />
     
    		<mw:contentplace id="foo2" />
     
    		<ul>
    			<li>toto</li>
    			<li>toto2</li>
    		</ul>
     
    		<div><strong>Todd</strong></div>
    </mw:master>
    Actuellement, mon XSD n'accepte qu'une seule occurence de chaque type ('<contentplace>' ou une balise block xHTML). Je peux mettre maxOccurs à '<contentplace>' en 'unbounded'. Mais c'est pas suffisant, il faudrait que je mette maxOccurs aux balises xHTML, mais ce n'est pas moi qui l'a définit, et je l'appelle comme une extension. De plus, même en ayant fait ça, il faudrait que je redemande un maxOccurs à "unbounded" pour ce qu'il y a globalement dans la racine je suppose.

    Bref quelqun aurait-til déjà travaillé sur l'occurence d'une combinaison de balises perso et de balises importées ?

    Merci à tous ceux qui tenteront de m'aider .
    Bonne journée,
    Oragon Efreet.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    Bon j'ai résolu mon problème avec un peu de bidouillage.

    Voici mon schéma final :

    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
    <?xml version="1.0"?>
    <xs:schema	xmlns:xs="http://www.w3.org/2001/XMLSchema"
    			targetNamespace="http://www.me3w.fr/Namespace"
    			xmlns="http://www.me3w.fr/Namespace"
    			elementFormDefault="qualified"
    >
     
    	<xs:annotation>
    		<xs:documentation>
    			Allow master page validation.
     
    			Namespace : http://www.we3w.fr/Namespace
     
    			For further information :
     
    			Copyright (c) 2009 Oragon Efreet
    			All Right Reserved
    		</xs:documentation>
    	</xs:annotation>
     
    	<!-- Import xHTML 1 Strict tags in code without redefining them	-->
    	<xs:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="xhtml1-strict.xsd"/>
     
        <xs:complexType name="contentplaceType">
        		<xs:attribute name="id" type="xs:string" />
        </xs:complexType>
     
        <!-- Only 'content' tags can be used has direct children elements of 'page' root element -->
     
        <xs:complexType name="rootType" xmlns="http://www.w3.org/1999/xhtml">
    		<xs:choice maxOccurs="unbounded" >
    			<xs:group ref="block" maxOccurs="unbounded"></xs:group>
    			<xs:element name="contentplace" type="contentplaceType" xmlns="http://www.me3w.fr/Namespace" />
    		</xs:choice>
        </xs:complexType>
     
     
     
        <xs:element name="master" type="rootType" />
     
    </xs:schema>
    J'ai refait le type 'rootType'. Il contient un '<xs:choice>' dont le nombre de ses occurence n'est pas finit. A l'intérieur, un appel au group 'block' et un élement de type 'contentplaceType' et le tour est joué.

    J'espère que ça pourra aider quelqu'un qui cherche à faire quelque chose de plus ou moins équivalent

    Oragon Efreet

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

Discussions similaires

  1. [DOM] utiliser les fonctions Node sur des balises html
    Par durthu dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/10/2007, 14h42
  2. [XPath] Apply-templates sur des balises de type pwet:test
    Par BiM dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/09/2006, 15h17
  3. Explication sur des balises
    Par Gandalf5975 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/07/2006, 16h18
  4. [XSD] Problème d'order sur des noeuds dans un schema
    Par jesus144 dans le forum Valider
    Réponses: 2
    Dernier message: 13/04/2006, 15h59
  5. [RegEx] utilisation de preg_replace sur des balises
    Par Kerod dans le forum Langage
    Réponses: 5
    Dernier message: 09/12/2005, 13h46

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