Was ist der Zweck von XSD-Dateien?

90

Warum benötigen wir eine XSD-Datei, da wir die XML-Datei von C # (.NET) aus abfragen können? Ich weiß, dass es sich um eine Metadatendatei einer bestimmten XML-Datei handelt. Wir können die Beziehungen in XSD angeben, aber wie funktioniert es dann?

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>

Ich möchte Daten von den OrderElementen gemäß einer bereitgestellten erhalten CustomerID.

Außerdem : Was ist der Zweck, die Beziehungen in XSD anzugeben?

Roter Schwan
quelle
stackoverflow.com/questions/2333998/… , kann auch verwiesen werden!
AVA

Antworten:

106

XSD- Dateien werden verwendet, um zu überprüfen, ob XML-Dateien einem bestimmten Format entsprechen.

In dieser Hinsicht sind sie ähnlich wie DTD s , die vor ihnen existieren.

Der Hauptunterschied zwischen XSD und DTD besteht darin, dass XSD in XML geschrieben ist und als leichter zu lesen und zu verstehen gilt.

Oded
quelle
danke, kann ich also mit Linq xsd-Dateien von c3.net abfragen, um die Daten aus der xml-Datei zu erhalten? Wie?
Red Swan
@Lalit - Linq hat nichts damit zu tun.
Oded
Ein weiterer wichtiger Unterschied ist, dass Sie in einer DTD nicht viele Dinge erledigen können, die in XSD einfach zu erledigen sind.
Mort
Zum Abrufen von Daten kann ich also nur die XML-Datei verwenden, oder? Ich muss die Schemadatei nicht generieren. (Ich möchte es vorerst nicht validieren.) Ich möchte nur XML-Daten abrufen, die verschiedene Datensätze enthalten, die von IDs-Zuordnungen in jedem Element abhängen.
Red Swan
4
@Lalit - Wenn Sie sich nicht für die Beziehungen als solche interessieren und nicht überprüfen müssen, ob sie einer Regel entsprechen (in einer XSD kodifiziert), verwenden Sie keine XSD und fragen Sie das XML einfach direkt ab.
Oded
48

Ohne XML-Schema (XSD-Datei) ist eine XML-Datei ein relativ freier Satz von Elementen und Attributen. Die XSD-Datei definiert, welche Elemente und Attribute in welcher Reihenfolge zulässig sind.

Im Allgemeinen ist XML eine Metasprache. XSD-Dateien definieren bestimmte Sprachen in dieser Metasprache. Wenn Ihre XSD-Datei beispielsweise die Definition von XHTML 1.0 enthält, muss Ihre XML-Datei eher zu XHTML 1.0 als zu einem anderen Format passen.

Oleg
quelle
18

Sie erwähnen C # in Ihrer Frage, daher kann es hilfreich sein, sich XSD als eine ähnliche Rolle wie eine C # -Schnittstelle vorzustellen.

Es definiert, wie das XML aussehen soll, ähnlich wie eine Schnittstelle definiert, was eine Klasse implementieren soll.

Garry
quelle
4
Wenn Sie eine Klasse und eine Schnittstelle verwenden, die implementiert werden soll, können Sie feststellen, ob die Klasse korrekt ist. Auf die gleiche Weise können Sie feststellen, ob die XML-Datei korrekt ist, wenn Sie eine XML-Datei mit der Bezeichnung xsd verwenden.
Garry
16

XSDs beschränken das Vokabular und die Struktur von XML-Dokumenten.

  • Ohne eine XSD , muss ein XML - Dokument folgt nur den Regeln für seine wohlgeformt wie in der gegebenen W3C XML - Empfehlung .
  • Bei einer XSD muss ein XML-Dokument zusätzliche Einschränkungen für die Namen und Werte seiner Elemente und Attribute einhalten, um gemäß der W3C-XML-Schemaempfehlung als gültig für die XSD angesehen zu werden .

Bei XML dreht sich alles um Übereinstimmung , und XSDs bieten die Möglichkeit, die Vereinbarung über die grundlegende Definition von XML selbst hinaus zu strukturieren und zu kommunizieren.

kjhughes
quelle
12

Fragen sind auch: Was ist der Zweck, die Beziehungen in xsd anzugeben.

Angenommen, Sie möchten XML für das Tool einer externen Partei oder ähnliches generieren. Wie würden Sie wissen, welcher Struktur es folgen darf, um für das Tool einer externen Partei korrekt verwendet zu werden? Sie schreiben in ein Schema. Wenn Sie möchten, dass andere Personen Ihr Tool verwenden, schreiben Sie ebenfalls ein Schema, dem sie folgen sollen. Es kann auch nützlich sein, um Ihr eigenes XML zu validieren.

Robert
quelle
8

Bevor ich die XSD (XML Schema Definition) verstehe, möchte ich erklären;

Was ist ein Schema?

beispielsweise; emailID: peter # gmail

Sie können feststellen, dass die oben angegebene E-Mail-ID nicht gültig ist, da kein @, .com oder .net oder .org vorhanden ist.

Wir kennen das E-Mail-Schema, das wie folgt aussieht: [email protected].

Schlussfolgerung: Das Schema validiert die Daten nicht. Es führt die Validierung der Struktur durch.

XSD ist eigentlich eine der Implementierungen von XML Schema. andere haben wir

Wir verwenden XSD, um XML-Daten zu validieren.

Premraj
quelle
7

Ein XSD ist ein formeller Vertrag, der angibt, wie ein XML-Dokument erstellt werden kann. Es wird häufig verwendet, um ein XML-Dokument zu validieren oder Code daraus zu generieren.

troelskn
quelle
5

Eine XSD-Datei ist eine XML-Schemadefinition und wird verwendet, um eine Standardmethode zum Überprüfen der Übereinstimmung eines bestimmten XML-Dokuments mit Ihren Erwartungen bereitzustellen.

a'r
quelle
5

Eine .xsd-Datei wird als XML-Schema bezeichnet. Über ein XML-Schema benötigen wir möglicherweise eine bestimmte Struktur in einem bestimmten XML - welche Elemente in welcher Reihenfolge, wie oft, mit welchen Attributen, wie sie verschachtelt sind usw. Wenn wir ein Schema für unsere XML-Eingabe haben, können wir dies überprüfen dass es die Daten enthält, die es enthalten muss, und sonst nichts, mit ein paar Zeilen, die einen Schema-Validator aufrufen.


quelle
4

Die xsd-Datei ist das Schema der xml-Datei - sie definiert, welche Elemente auftreten können und welche Einschränkungen sie haben (wie Menge, Reihenfolge, Grenzen, Beziehungen, ...).

mort
quelle