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 :

Conversion #PCDATA dans un xs:group


Sujet :

Valider XML

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Conversion #PCDATA dans un xs:group
    Bonjour à tous,

    Je suis en train de convertir une DTD en XSD.

    Je suis bloqué sur un point dont je ne trouve aucune réponse :

    Dans ma DTD, j'ai une entité comme suit :
    <!ENTITY % style "((#PCDATA) | gras | ital | souligne | exp)*>

    Je souhaiterais la convertir en un xs:group...
    J'en suis à :

    <xs:group name="style">
    <xs:choice>
    <xs:element name="gras"/>
    <xs:element name="ital"/>
    <xs:element name="souligne"/>
    <xs:element name="exp"/>
    </xs:choice>
    </xs:group>

    Je n'arrive pas à intégrer la notion de #PCDATA...
    Y a t'il un moyen de résoudre mon problème ?

    Merci d'avance !

  2. #2
    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 fait, ton modèle DTD correspond à un modèle mixte, comprenant des noeuds textuels et des éléments, dans un ordre arbitraire. La création d'un modèle mixte passe par l'affectation de la valeur true à l'attribut mixed du type complexe.

    Dans ton cas, comme tu as défini un <group> plutôt qu'un <complexType>, cet attribut doit être initialisé dans l'élément parent qui contient le <group>. Ce qui donne, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<xs:element name="paragraphe">
    		<xs:complexType mixed="true">
    			<xs:sequence maxOccurs="unbounded">
    				<xs:group ref="style"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    Par contre, fais attention : n'ayant pas défini de type pour tes éléments <gras>, <ital>, etc. ils sont par défaut de type <anyType> et peuvent donc accepter n'importe quoi.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci...

    Je pensais à cette solution mais je me demandais si il n'y avais pas moyen de gérer le complexType mixed="True" dans mon xs:group.

    Je suis peut-être un peu gourmand
    (en fait, j'utilise ce xs:group une cinquantaine de fois dans mon schéma, donc si je peux éviter de le faire à la main, cela m'arrange !!!).

    Est-ce possible ?

    Merci beaucoup pour ta réponse.

    PS : Mes éléments <gras>, <ital>, etc... sont définis ailleurs dans mon XSD... Je en voulais pas surcharger mon post

  4. #4
    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
    Citation Envoyé par dust45
    Je pensais à cette solution mais je me demandais si il n'y avais pas moyen de gérer le complexType mixed="True" dans mon xs:group.
    Hé non, c'est l'un ou l'autre. As-tu d'ailleurs vraiment un intérêt à gérer ces balises comme un <group> ? Ne vaut-il pas mieux les passer en <complexType>, ce qui réglerait ton problème définitivement ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    En fait, je veux juste convertir ma DTD.
    Comme cette DTD utilise une Entité %styles;, je cherchais un équivalent en XSD et j'ai trouvé le xs:group.

    Peut être y a t'il une meilleure solution ?

    Mais je ne vois pas comment utiliser le ComplexType de facon à le réutiliser comme un xs:group car je ne dois pas avoir de balise <style> dans mon document XML.

    Si tu as une solution, je suis preneur, sinon j'implanterai le bout de code que tu m'avais déjà gracieusement donné

    Merci beaucoup en tout cas.

  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
    Il faudrait que tu précises dans quel contexte est utilisée l'entité %styles; , en donnant des extraits de ta DTD où elle figure. D'une manière générale, la transcription littérale d'une DTD vers un schéma est dangereuse, les deux méthodes étant très différentes.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/06/2009, 19h34
  2. conversion nvarchar dans requete ms-sql
    Par deepuser dans le forum Développement
    Réponses: 6
    Dernier message: 24/12/2007, 17h53
  3. Conversion date dans la connexion à la base
    Par wanou44 dans le forum ASP
    Réponses: 3
    Dernier message: 08/10/2007, 16h20
  4. plusieurs choix dans un meme groupes d'option
    Par pit88 dans le forum IHM
    Réponses: 1
    Dernier message: 20/06/2007, 12h51
  5. [C# 2.0] Conversion hexadécimale dans un tableau de byte[]
    Par cyllix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/08/2006, 12h29

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