Quel est le but des fichiers XSD?

90

Puisque nous pouvons interroger le fichier XML à partir de C # (.NET), pourquoi avons-nous besoin d'un fichier XSD? Je sais que c'est un fichier de métadonnées d'un fichier XML particulier. Nous pouvons spécifier les relations dans XSD, mais quel est son fonctionnement alors?

XML

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
  <Orders>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>6</EmployeeID>
      <OrderDate>1997-05-06T00:00:00</OrderDate>
      <RequiredDate>1997-05-20T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-05-09T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>3.35</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>8</EmployeeID>
      <OrderDate>1997-07-04T00:00:00</OrderDate>
      <RequiredDate>1997-08-01T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-07-14T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>4.42</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
  </Orders>
</Root>

Je souhaite obtenir des données à partir des Orderéléments selon un fichier fourni CustomerID.

Aussi : Quel est le but de donner les relations dans XSD?

Cygne rouge
la source
stackoverflow.com/questions/2333998/… , peut également être référé!
AVA

Réponses:

106

Les fichiers XSD sont utilisés pour valider que les fichiers XML sont conformes à un certain format.

À cet égard, ils sont similaires aux DTD qui existaient avant eux.

La principale différence entre XSD et DTD est que XSD est écrit en XML et est considéré comme plus facile à lire et à comprendre.

Oded
la source
merci, puis-je interroger les fichiers xsd de c3.net en utilisant Linq pour obtenir les données du fichier xml? Comment?
Red Swan
@Lalit - Linq n'a rien à voir avec ça.
Oded
Une autre différence importante est que vous ne pouvez pas faire beaucoup de choses facilement en XSD dans une DTD.
mort
Donc, pour obtenir des données, je ne peux utiliser que le fichier xml, n'est-ce pas? Je n'ai pas besoin de générer son fichier de schéma. (Je ne veux pas le valider pour l'instant) Je veux juste obtenir des données de xml qui ont divers enregistrements dépendant des cartes d'ID dans chaque élément.
Red Swan
4
@Lalit - si vous ne vous souciez pas des relations en tant que telles et n'avez pas besoin de vérifier qu'elles sont conformes à une sorte de règle (codifiée dans un XSD), alors n'utilisez pas un XSD et interrogez simplement le XML directement.
Oded
48

Sans schéma XML (fichier XSD), un fichier XML est un ensemble relativement libre d'éléments et d'attributs. Le fichier XSD définit quels éléments et attributs sont autorisés et dans quel ordre.

En général, XML est un métalangage. Les fichiers XSD définissent des langues spécifiques dans ce métalangage. Par exemple, si votre fichier XSD contient la définition de XHTML 1.0, alors votre fichier XML est requis pour s'adapter à XHTML 1.0 plutôt qu'à un autre format.

Oleg
la source
19

Vous mentionnez C # dans votre question, il peut donc être utile de penser que XSD joue un rôle similaire à une interface C #.

Il définit à quoi le XML doit «ressembler» de la même manière qu'une interface définit ce qu'une classe doit implémenter.

Garry
la source
4
Si vous prenez une classe et une interface qu'elle est censée implémenter, vous pouvez dire si la classe est correcte. De la même manière, si vous prenez un fichier xml et qu'il est xsd, vous pouvez dire si le xml est correct.
Garry
16

Les XSD limitent le vocabulaire et la structure des documents XML.

  • Sans XSD , un document XML n'a qu'à suivre les règles pour être bien formé, comme indiqué dans la recommandation XML du W3C .
  • Avec un XSD , un document XML doit adhérer à des contraintes supplémentaires placées sur les noms et les valeurs de ses éléments et attributs afin d'être considéré comme valide par rapport au XSD selon la recommandation de schéma XML du W3C .

XML est une question d'accord , et les XSD fournissent les moyens de structurer et de communiquer l'accord au-delà de la définition de base du XML lui-même.

kjhughes
la source
12

Les questions sont également: quel est le but de donner les relations dans xsd.

Supposons que vous souhaitiez générer du XML pour l'outil d'un tiers externe, ou similaire - comment sauriez-vous quelle structure il est autorisé à suivre pour être utilisé correctement pour son outil? vous écrivez dans un schéma. De même, si vous souhaitez que d'autres personnes utilisent votre outil, vous leur écririez un schéma à suivre. Cela peut également être utile pour valider votre propre XML.

Robert
la source
8

Avant de comprendre le XSD (XML Schema Definition), laissez-moi vous expliquer;

Qu'est-ce que le schéma?

par exemple; emailID: peter # gmail

Vous pouvez identifier que l'emailID ci-dessus n'est pas valide car il n'y a pas de @, .com ou .net ou .org.

Nous connaissons le schéma de messagerie, il ressemble à [email protected].

Conclusion: Schema ne valide pas les données, il fait la validation de la structure.

XSD est en fait l'une des implémentations de XML Schema. d'autres que nous avons

Nous utilisons XSD pour valider les données XML.

Premraj
la source
7

Un XSD est un contrat formel qui spécifie comment un document XML peut être formé. Il est souvent utilisé pour valider un document XML ou pour générer du code à partir de.

troelskn
la source
5

Un fichier XSD est une définition de schéma XML et il est utilisé pour fournir une méthode standard de vérification qu'un document XML donné est conforme à ce que vous attendez.

a'r
la source
5

Un fichier .xsd est appelé un schéma XML. Via un schéma XML, nous pouvons exiger une certaine structure dans un XML donné - quels éléments dans quel ordre, combien de fois, avec quels attributs, comment ils sont imbriqués, etc. Si nous avons un schéma pour notre entrée XML, nous pouvons vérifier qu'il contient les données dont nous avons besoin, et rien d'autre, avec quelques lignes appelant un validateur de schéma.


la source
4

Le fichier xsd est le schéma du fichier xml - il définit quels éléments peuvent apparaître et leurs restrictions (comme le montant, l'ordre, les limites, les relations, ...)

mort
la source