Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: LOPERA Stéphanie (stephanie.lopera@lafon.fr)
Date: 18/02/2004 - 10:19


Bonjour,

Mon script a déja fonctionné pour faire une validation (il y a un certain
temps !). Aujourd'hui, la validation échoue à chaque fois alors que sous
XMLSpy, la validation est OK.
J'utilise MSXML4.0.

Voici un extrait du script (JScript) :
      ------------------------------------------------------------
        function valide(xmlResult, fichierXSD) {
           try {
                   // chargement fichier XML
                   var xmlDoc1 = new ActiveXObject("Msxml2.DOMDocument.4.0");
                   xmlDoc1.async = false ;
                   xmlDoc1.validateOnParse = false ;
                   var result_loadxml = xmlDoc1.loadXML(xmlResult);

                   //ajout de l'attribut x-schema au fichier XML
                   var root, newAtt, namedNodeMap ;
                   root = xmlDoc1.documentElement;
                   newAtt = xmlDoc1.createAttribute("xmlns");
                   namedNodeMap = root.attributes ;
                   namedNodeMap.setNamedItem(newAtt);

                   // chargement fichier XSD
                   var xmldoc2 = new ActiveXObject("Msxml2.DOMDocument.4.0");
                   var schema = new ActiveXObject("Msxml2.XMLSchemaCache.4.0");
                   schema.add("", fichierXSD);
                   //association du schema xsd au fichier xml
                   xmldoc2.schemas = schema;

                   // chargement seulement si schema associe valide
                   var result2 = xmldoc2.loadXML(xmlDoc1.xml);
                   ok = xmldoc2.validate();

                   // desallocation de la memoire
                   xmlDoc1 = null ;
                   xmlDoc2 = null ;
                   schema = null ;

                   if (ok.errorCode == 0) { return true ; }
                   else { return false ; }
           }
           catch (e) {
                // si il y a une erreur (doc xml mal forme), on retourne false
                return false ;
           }
        }
      ------------------------------------------------------------

Au cas où ça peut servir, en entrée, mon flux XML est (en chaine de car sans
retour chariot) :

      ------------------------------------------------------------
<?xml version="1.0"?>
<VenteCarte>
    <dd>2004-16-02T23:30:00+01:00</dd>
    <tdCarte>
        <tc>CLASSIQUE</tc>
        <cu>12</cu>
        <e>10.10</e>
    </tdCarte>
    <tdCarte>
        <tc>CLASSIQUE</tc>
        <cu>24</cu>
        <e>20.24</e>
    </tdCarte>
</VenteCarte>
      ------------------------------------------------------------

Mon schéma est :
      ------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
        <xs:include schemaLocation="TYPES.xsd"/>
        <xs:element name="VenteCarte">
                <xs:complexType>
                        <xs:group ref="td"/>
                </xs:complexType>
        </xs:element>
        <!-- Description d'une carte -->
        <xs:group name="td">
                <xs:sequence>
                        <xs:element ref="dd"/>
                        <xs:sequence maxOccurs="20">
                                <xs:element ref="tdCarte"/>
                        </xs:sequence>
                </xs:sequence>
        </xs:group>
        <!-- Date de mis à jour -->
        <xs:element name="dd" type="xs:dateTime" />
        <!-- Description d'une carte -->
        <xs:element name="tdCarte">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="tc"/>
                                <xs:element ref="cu"/>
                                <xs:element ref="e"/>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <!-- Tarif de vente de la carte -->
        <xs:element name="TARIF_EUROS" type="montant" />
        <!-- Nombre d'unités préchargées -->
        <xs:element name="cu" type="nb_unites" />
        <!-- Type de la carte : Flotte ou particulier -->
        <xs:element name="tc" type="type_carte" />
        <!-- Tarif a appliquer en euros -->
        <xs:element name="e" type="tarif" />
</xs:schema>
      ------------------------------------------------------------

Fichier types.xsd :
      ------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
        <!-- Nombre d'unités de carte -->
        <xs:simpleType name="nb_unites">
                <xs:restriction base="xs:byte">
                        <xs:minInclusive value="0"/>
                        <xs:maxInclusive value="99"/>
                </xs:restriction>
        </xs:simpleType>
        <!-- Tarif à appliquer en euro -->
        <xs:simpleType name="tarif">
                <xs:restriction base="xs:decimal">
                        <xs:fractionDigits value="2"/>
                        <xs:minInclusive value="0.01"/>
                        <xs:maxInclusive value="99.99"/>
                </xs:restriction>
        </xs:simpleType>
        <!-- Type de carte -->
        <xs:simpleType name="type_carte">
                <xs:restriction base="xs:string">
                        <xs:enumeration value="CLASSIQUE"/>
                        <xs:enumeration value="FLOTTE"/>
                </xs:restriction>
        </xs:simpleType>
</xs:schema>
      ------------------------------------------------------------

--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !

Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).

Cette liste est a votre disposition pour discuter en francais de tout sujet technique lie a XML.

Pour resilier votre abonnement, envoyez un message contenant la commande "unsubscribe" a xml-tech-request@xmlfr.org (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)



Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement