Forum Programmation.autre XML Schema: Déclaration d'une énumération d'une map clé-valeur

Posté par .
Tags :
0
11
juin
2012

Bonjour,
je cherche a décrire une énumération d'une map clé valeur en XML schema.

J'en suis arrivé a ce code imparfait :

<xsd:complexType name="TEST">
                <xsd:sequence>
                    <xsd:element name="string">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string">
                                <xsd:enumeration value="string1"></xsd:enumeration>
                                <xsd:enumeration value="string2"></xsd:enumeration>
                                <xsd:enumeration value="string3"></xsd:enumeration>
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:element>
                    <xsd:element name="key">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:int">
                                <xsd:enumeration value="1"></xsd:enumeration>
                                <xsd:enumeration value="8"></xsd:enumeration>
                                <xsd:enumeration value="10"></xsd:enumeration>
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>

Ce code est imparfait car il me définie mes valeurs possibles, mes clés possible mais a aucun moment la relation tel clé pour tel valeur.

  • # Je suis peut-être à côté de la plaque, mais es-tu obligé d'utiliser XML pour ça ?

    Posté par . Évalué à 2.

    Parce que moi, lorsqu'on me parle de clé=>valeur, j'aurais plutôt tendance à penser JSON … Mais ce n'est qu'une question, après il y a peut-être des contraintes que je ne connais pas.

  • # associative array

    Posté par . Évalué à 1.

    En cherchant ce terme, je suis tombé sur ce document du w3c qui devrait t'éclaircir les idées sur le sujet.
    Il définisse la clé comme un attribut id requis de l'élément qui peut contenir toutes les datas que tu veux.
    En ce qui concerne tes énumérations, je te conseille de séparer leur déclarations et d'utiliser ces déclarations séparées dans ta map.

  • # Chez moi

    Posté par . Évalué à -1.

    Perso dans le WSDL que j'avais dû faire, pour gérer ce problème j'ai créé des types, comme tu le proposes. Je n'ai moi non plus pas trouvé d'autre solution.

    Exemple:

    <s:complexType name="assocAlias">
        <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" nillable="false" name="key" type="s:string" /> 
            <s:element minOccurs="1" maxOccurs="1" nillable="true" name="value" type="tns:aliasInfo" /> 
        </s:sequence>
    </s:complexType>
    
    

    Puis

    <s:complexType name="aliasInfo">
        <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" nillable="true" name="cname" type="s:string" />  
            <s:element minOccurs="1" maxOccurs="1" nillable="true" name="cname_host" type="s:string" /> 
            <s:element minOccurs="1" maxOccurs="1" nillable="false" name="cname_ttl" type="s:int" /> 
            <s:element minOccurs="1" maxOccurs="1" nillable="true" name="map_filename" type="s:string" />  
        </s:sequence>
    </s:complexType>
    
    

    Mais quelle horreur de faire un WSDL à la main, il existe tout un tas de librairies qui permettent de le générer rapidement !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.