120 votes

Quelle est la différence entre XML et XSD ?

Quelle est la différence entre Extensible Markup Language (XML) et XML Schema (XSD) ?

155voto

anthares Points 5536

En fait, le xsd est le xml lui-même. Son but est de valider la structure d'un autre document xml. Le xsd n'est pas obligatoire pour tout xml, mais il garantit que le xml peut être utilisé à des fins particulières. Le xml contient uniquement des données dans un format et une structure appropriés.

0 votes

Pour être clair, si une tierce partie m'a envoyé un document .XSD avec des éléments tels que : <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> inclus - c'est juste une description des champs n'est-ce pas. Est-ce une chose raisonnable de leur demander un exemple réel de demande qui serait du XML brut avec <QuoteResultID> etc etc.

5 votes

Vous pouvez sûrement leur demander. Vous pouvez aussi utiliser certains outils en ligne qui peuvent faire cela pour vous, comme celui-ci par exemple - xsd2xml . Il suffit de coller le xsd et il générera un exemple de document xml basé sur celui-ci.

117voto

InfantPro'Aravind' Points 5728

Prenons un exemple

<root>
  <parent>
     <child_one>Y</child_one>
     <child_two>12</child_two>
  </parent>
</root>

et concevoir un xsd pour cela :

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="child_one" type="xs:string" />
              <xs:element name="child_two" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Ce qui n'est pas possible avec XSD : je voudrais l'écrire en premier car la liste est très petite
1) Vous ne pouvez pas valider un nœud/attribut en utilisant la valeur d'un autre nœud/attribut.
2) Il s'agit d'une restriction : Un élément défini dans un fichier XSD doit être défini avec un seul type de données. Dans l'exemple ci-dessus, pour <child_two> apparaissant dans un autre <parent> le type de données ne peut être défini autrement que par int.
3) Vous ne pouvez pas ignorer la validation des éléments et des attributs, c'est-à-dire que si un élément/attribut apparaît dans le XML, il doit être bien défini dans le XSD correspondant. Bien que l'utilisation de <xsd:any> le permet, mais il a ses propres règles. Le respect de ces règles conduit à l'erreur de validation. J'avais essayé une approche similaire, et je n'ai certainement pas réussi, voici les questions-réponses

ce qui est possible avec XSD :
1) Vous pouvez tester la hiérarchie correcte des nœuds XML. Dans l'exemple ci-dessus, child_two ne peut pas être l'enfant immédiat de Root, mais il est l'enfant du tag "parent" qui est à son tour un enfant du noeud "Root", il y a une hiérarchie ].
2) Vous pouvez définir le type de données des valeurs des noeuds. Dans l'exemple ci-dessus, child_two ne peut pas avoir d'autres données que le nombre.
3) Vous pouvez également définir des types de données personnalisés, [par exemple, pour le nœud <month> la donnée possible peut être l'un des 12 mois il faut donc définir tous les 12 mois dans un nouveau type de données en écrivant tous les noms des 12 mois comme des valeurs d'énumération la validation affiche une erreur si le XML d'entrée contient une autre valeur que ces 12 valeurs . ]
4) Vous pouvez mettre la restriction sur l'occurrence des éléments, en utilisant minOccurs et maxOccurs, les valeurs par défaut sont 1 et 1.

... et bien d'autres encore ...

1 votes

@InfantPro 'Aravind' Que vouliez-vous dire par "Vous ne pouvez pas valider un noeud/attribut en utilisant la valeur d'un autre noeud/attribut". Pourquoi quelqu'un voudrait-il faire cela ?

0 votes

0 votes

"Vous ne pouvez pas valider un nœud/attribut en utilisant la valeur d'un autre nœud/attribut". Qu'est-ce que cela signifie ?

17voto

Skull Points 519

XSD :
XSD (XML Schema Definition) spécifie comment décrire formellement les éléments d'un document XML (Extensible Markup Language).
Xml :
Le XML a été conçu pour décrire les données Il est indépendant du logiciel et du matériel.
Il améliore les choses suivantes.
-Partage des données.
-Indépendant de la plateforme.
-Augmenter la disponibilité des données.

Différences :

  1. XSD est basé et écrit sur XML.

  2. XSD définit les éléments et les structures qui peuvent apparaître dans le document, alors que XML ne le fait pas.

  3. XSD garantit que les données sont correctement interprétées, alors que XML ne le fait pas.

  4. Un document XSD est validé comme XML, mais l'inverse n'est pas toujours vrai.

  5. XSD est plus efficace que XML pour détecter les erreurs.

Un XSD définit les éléments qui peut être utilisé dans les documents, en relation avec les données réelles avec lesquelles il doit être encodé.
par exemple :
Une date exprimée par 1/12/2010 peut signifier soit le 12 janvier, soit le 1er décembre. La déclaration d'un type de données de date dans un document XSD garantit qu'il respecte le format imposé par XSD.

0 votes

La première déclaration décrivait tout.

8voto

shubham1js Points 76

EXEMPLE SIMPLE DE XML :

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XSD DU XML ci-dessus(Expliqué) :

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Ici :

xs:élément : Définit un élément.

xs:séquence : Indique que les éléments enfants n'apparaissent que dans l'ordre mentionné.

xs:complexType : Indique qu'il contient d'autres éléments.

xs:simpleType : Indique qu'ils ne contiennent pas d'autres éléments.

type : chaîne, décimale, entier, booléen, date, heure,

  • En termes simples xsd est une autre façon de représenter et de valider les données XML avec le type spécifique.

  • Avec l'aide d'attributs supplémentaires, nous pouvons effectuer des opérations multiples.

  • L'exécution de toute tâche sur xsd est plus simple que sur xml.

0 votes

Bonjour ! Quel programme dois-je utiliser pour créer un fichier XSD ?

0 votes

@Judith program ? pouvez-vous expliquer votre question . comme éditeur ou langage ou outil ?

6voto

kjhughes Points 5581

XML versus XSD

XML définit le syntaxe de éléments et attributs pour structurer les données dans un bien formé document.

XSD <sup>(alias XML Schema) </sup> Comme la DTD, l'e X la responsabilité dans XML en permettant à l'utilisateur de définir le vocabulaire et grammaire de la éléments et attributs dans un valide XML document.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X