question sur xsd

question sur xsd - XML/XSL - Programmation

Marsh Posté le 18-04-2010 à 18:23:08    

voila je suis en train de tester XSD. J'ai cru comprendre que c'etait sensé valider un fichier xml.
 
donc j'ai fait le test suivant, j'ai recupéré un xml et l'xsd correspondant et changé un type de donné pour voir ce qu'il me dit quand l'xml ne correspond pas avec le schema
 
j'ai donc l'xsd suivant (notez que l'element "nom" doit etre un float, c'est l'erreur que j'ai insérée)
 
<?xml version="1.0" encoding="UTF-8"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="personne">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="nom" type="xs:float" />
          <xs:element name="prenom" type="xs:string" />
          <xs:element name="date_naissance" type="xs:date" />
          <xs:element name="etablissement" type="xs:string" />
          <xs:element name="num_tel" type="xs:string" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:schema>
 
#####################################
l'xsl suivant
 
<?xml version='1.0'?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
 
 
  <xsl:template match="/">
<html>
  <body>
<xsl:for-each select="personne">
    <b>Nom:</b> <xsl:value-of select="nom"/> <br />
    <b>Prenom:</b> <xsl:value-of select="prenom"/> <br />
    <b>Date de naissance:</b> <xsl:value-of select="date_naissance"/> <br />
    <b>Etablissement:</b> <xsl:value-of select="etablissement"/> <br />
    <b>Numero de telephone</b> <xsl:value-of select="num_tel"/> <br />
</xsl:for-each>
  </body>
</html>
  </xsl:template>
</xsl:stylesheet>  
 
 
##########################
et l'xml suivant
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml-stylesheet type="text/xsl" href="personne.xsl" ?>
  <personne xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="personne.xsd">
    <nom>MBODJ</nom>
    <prenom>Babacar</prenom>
    <date_naissance>1996-10-06</date_naissance>
    <etablissement>NIIT</etablissement>
    <num_tel>764704140</num_tel>
  </personne>
 
##########################
Et donc le fait que j'ai mis float a la place de string n'affecte en rien l'affichage
 
Est ce normal? Ce ne devrait pas me dire un truc du genre: "l'xml n'est pas conforme au schema"? Est ce que ca vient de l'implementation de xsd dans firefox par hazard? Ai je oublié de faire quelque chose...?
 
Bref si ca ne me dit pas que l'xml n'est pas conforme, quelle est l'utilité de déclarer le schema dans l'xml ?
 
Je cherche depuis un moment sur le net sans trouvé rien de pertinent.
Merci d'avance pour vos explications


---------------
Toinou87 ;-p May the force be with you!!
Reply

Marsh Posté le 18-04-2010 à 18:23:08   

Reply

Marsh Posté le 18-04-2010 à 20:39:25    

Toinou87 a écrit :

voila je suis en train de tester XSD. J'ai cru comprendre que c'etait sensé valider un fichier xml.


Oui mais c'est pourri, c'est verbeux et illisible, je suggère fortement d'utiliser RelaxNG et/ou Schematron à la place (Schematron pour les contraintes que RelaxNG ne peut pas exprimer).

 

Et Firefox n'effectue pas de validation XSD, à ce que je sache, il faut que tu fasses ta validation séparément.

 

Exemple: http://validator.nu/?doc=http%3A%2 [...] source=yes

 

En utilisant la conversion suivante de ton schéma XSD:

Code :
  1. start = element personne {
  2.   element nom { xsd:float },
  3.   element prenom { text },
  4.   element date_naissance { xsd:date },
  5.   element etablissement { text },
  6.   element num_tel { text }
  7. }

Message cité 1 fois
Message édité par masklinn le 18-04-2010 à 20:54:32

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 18-04-2010 à 21:01:34    

masklinn a écrit :


Oui mais c'est pourri, c'est verbeux et illisible, je suggère fortement d'utiliser RelaxNG et/ou Schematron à la place (Schematron pour les contraintes que RelaxNG ne peut pas exprimer).
 
Et Firefox n'effectue pas de validation XSD, à ce que je sache, il faut que tu fasses ta validation séparément.
 
Exemple: http://validator.nu/?doc=http%3A%2 [...] source=yes
 
En utilisant la conversion suivante de ton schéma XSD:

Code :
  1. start = element personne {
  2.   element nom { xsd:float },
  3.   element prenom { text },
  4.   element date_naissance { xsd:date },
  5.   element etablissement { text },
  6.   element num_tel {text }
  7. }



 
j'ai du mal m'exprimer. Quand j'ai dit que je testais XSD je ne parlais pas d'un logiciel mais du langage. Apres c'est pour des exercices donc j'ai pas le choix de la technologie de validation de l'xml
 
Donc si je comprends bien ce que tu dis, le browser ne valide pas la structure du fichier xml quand un xsd y est referencé.
a quoi ca sert alors d'inclure xsi:noNamespaceSchemaLocation="personne.xsd" dans un fichier xml, si le fichier xsd n'est pas automatiquement comparé?
 
Parce que quand on rajoute un fichier xsl par exemple, on a pas besoin d'avoir un script ou un code derriere qui va generer la page stylisée. Donc je trouve bizarre/dommage que le browser ne fasse pas la validation du fichier xml !!!


---------------
Toinou87 ;-p May the force be with you!!
Reply

Marsh Posté le 18-04-2010 à 21:05:37    

Toinou87 a écrit :

j'ai du mal m'exprimer. Quand j'ai dit que je testais XSD je ne parlais pas d'un logiciel mais du langage.


J'ai bien compris.

Toinou87 a écrit :

Apres c'est pour des exercices donc j'ai pas le choix de la technologie de validation de l'xml


Ca par contre c'était pas spécifié. Tu peux pas demander à ton prof si t'as pas droit à un truc moins pourri?

Toinou87 a écrit :

Donc si je comprends bien ce que tu dis, le browser ne valide pas la structure du fichier xml quand un xsd y est referencé.


Oui, le parseur XML de Firefox ne gère pas les XSD (à ce que je sache)

Toinou87 a écrit :

a quoi ca sert alors d'inclure xsi:noNamespaceSchemaLocation="personne.xsd" dans un fichier xml, si le fichier xsd n'est pas automatiquement comparé?


Pour les parseurs XML qui comprennent/gèrent les XSD.

Toinou87 a écrit :

Parce que quand on rajoute un fichier xsl par exemple, on a pas besoin d'avoir un script ou un code derriere qui va generer la page stylisée. Donc je trouve bizarre/dommage que le browser ne fasse pas la validation du fichier xml !!!


Bof. Un navigateur, ça n'a pas vocation de faire ta validation, ça a pour vocation d'afficher des pages. Les XSL (une autre technologie bien merdique) c'est une feuille de style, ça sert à afficher un fichier XML, ça a du sens que ce soit supporté. XSD, pas vraiment.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-04-2010 à 10:20:36    

La vadilation se fait via un parser, par ex, en, PHP, tu peux utiliser DOM : tu files le XML et le XSD et il répond true ou false. Et XSD, c'est pas pour formater l'affichage mais pour vérifier la validité des données fournies en entrée dans le XML...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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