Was ist der Unterschied zwischen XML und XSD?

111

Was ist der Unterschied zwischen XML (Extensible Markup Language) und XSD (XML Schema)?

Gandalf StormCrow
quelle

Antworten:

145

Eigentlich ist die XSD XML selbst. Ziel ist es, die Struktur eines anderen XML-Dokuments zu validieren. Die XSD ist für kein XML obligatorisch, stellt jedoch sicher, dass das XML für bestimmte Zwecke verwendet werden kann. Das XML enthält nur Daten in geeignetem Format und geeigneter Struktur.

anthares
quelle
Nur damit ich klar bin - wenn mir ein Dritter ein .XSD-Dokument mit folgenden Eigenschaften gesendet hat: <xs: element name = "QuoteRequestID" type = "xs: unsignedLong" minOccurs = "0" /> enthalten - ist dies nur Eine Beschreibung der Felder ist es nicht. Ist es eine vernünftige Sache, sie nach einer tatsächlichen Beispielanfrage zu fragen, die Roh-XML mit <QuoteResultID> usw. usw. wäre
James Wilson
3
Sicher können Sie sie fragen. Sie können auch einige der Online-Tools verwenden, die dies für Sie tun können, wie zum Beispiel dieses - xsd2xml . Fügen Sie einfach die xsd ein und es wird ein darauf basierendes XML-Beispieldokument generiert.
Anthares
@anthares, ich habe den Link mit versucht: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema> aber am Ende bekam ich den Fehler: Error!!! The 'minOccurs' attribute cannot be present.
Heretoinfinity
Warum sollte das ein Problem sein?
Heretoinfinity
111


Nehmen Sie ein Beispiel

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

und entwerfe dafür eine xsd:

<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>


Was mit XSD nicht möglich ist: Ich möchte es zuerst schreiben, da die Liste sehr klein ist.
1) Sie können einen Knoten / ein Attribut nicht mit dem Wert eines anderen Knotens / Attributs validieren.
2) Dies ist eine Einschränkung: Ein in der XSD-Datei definiertes Element darf nur mit einem Datentyp definiert werden. [Im obigen Beispiel kann der Datentyp nur für int definiert werden , um <child_two>in einem anderen <parent>Knoten angezeigt zu werden.
3) Sie können die Validierung von Elementen und Attributen nicht ignorieren. Wenn ein Element / Attribut in XML angezeigt wird, muss es in der entsprechenden XSD genau definiert sein. Die Verwendung von <xsd:any>erlaubt es zwar, aber es hat seine eigenen Regeln. Bleiben, was zum Validierungsfehler führt. Ich hatte einen ähnlichen Ansatz versucht und war sicherlich nicht erfolgreich. Hier ist die Frage und Antwort


Was ist mit XSD möglich
? 1) Sie können die richtige Hierarchie der XML-Knoten testen. [xsd definiert, welches Kind unter welches Elternteil usw. fallen soll, wobei das Verbleibende als Fehler gezählt wird. Im obigen Beispiel kann child_two nicht das unmittelbare Kind von root sein, aber es ist das Kind von "parent", das wiederum a ist Kind des "Wurzel" -Knotens, es gibt eine Hierarchie.]
2) Sie können den Datentyp der Werte der Knoten definieren. [Im obigen Beispiel kann child_two keine anderen Daten als number haben.]
3) Sie können auch benutzerdefinierte Datentypen definieren. [Beispiel: Für Knoten <month>können die möglichen Daten einer der 12 Monate sein. Sie müssen also alle 12 Monate definieren In einem neuen Datentyp werden alle 12-Monats-Namen als Aufzählungswerte geschrieben.
4) Sie können die Einschränkung des Auftretens der Elemente mithilfe von minOccurs und maxOccurs einschränken. Die Standardwerte sind 1 und 1.

.. und viele mehr ...

InfantPro'Aravind '
quelle
1
@ InfantPro'Aravind 'Was meinten Sie mit "Sie können einen Knoten / ein Attribut nicht mit dem Wert eines anderen Knotens / Attributs validieren." Warum sollte jemand das tun wollen?
Geek
@Geek stackoverflow.com/questions/4126988/…
InfantPro'Aravind '18.
"Sie können einen Knoten / ein Attribut nicht mit dem Wert eines anderen Knotens / Attributs überprüfen." Was bedeutet das
GrowinMan
@ GrowinMan, Bedingte Validierung (keine Eltern-Kind-Beziehung) Beispiel: Wenn dies Ihre XML ist: <root> <A>A</A> <B/> <C/> </root>und wenn Knoten <A>ist <A>B</A>, dann machen Sie <B>obligatorisch, wenn <A>C</A>dann <C>obligatorisch.
InfantPro'Aravind '
Die oben genannte Anforderung ist mit XSD allein
InfantPro'Aravind '
15

XSD:
XSD (XML Schema Definition) gibt an, wie die Elemente in einem XML-Dokument (Extensible Markup Language) formal beschrieben werden. XML
:
XML wurde zur Beschreibung von Daten entwickelt. Es ist unabhängig von Software und Hardware.
Es verbessert die folgenden Dinge.
-Datenübertragung.
-Plattformunabhängig.
-Erhöhung der Verfügbarkeit von Daten.

Unterschiede:

  1. XSD basiert und ist auf XML geschrieben.

  2. XSD definiert Elemente und Strukturen, die im Dokument angezeigt werden können, XML jedoch nicht.

  3. XSD stellt sicher, dass die Daten richtig interpretiert werden, XML jedoch nicht.

  4. Ein XSD-Dokument wird als XML validiert, aber das Gegenteil ist möglicherweise nicht immer der Fall.

  5. XSD kann Fehler besser erkennen als XML.

Eine XSD definiert Elemente , die in den Dokumenten verwendet werden können und sich auf die tatsächlichen Daten beziehen, mit denen sie codiert werden soll.
Zum Beispiel:
Ein Datum, das als 12.01.2010 ausgedrückt wird, kann entweder den 12. Januar oder den 1. Dezember bedeuten. Durch das Deklarieren eines Datumsdatentyps in einem XSD-Dokument wird sichergestellt, dass er dem von XSD vorgegebenen Format entspricht.

Schädel
quelle
Die erste Aussage beschrieb alles.
Ojonugwa Jude Ochalifu
6

EINFACHES XML-BEISPIEL:

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

XSD VON OBEN XML (erklärt):

<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>

Hier:

xs: element : Definiert ein Element.

xs: sequence : Bezeichnet, dass untergeordnete Elemente nur in der angegebenen Reihenfolge angezeigt werden.

xs: complexType : Bezeichnet andere Elemente.

xs: simpleType: Gibt an, dass sie keine anderen Elemente enthalten.

Typ: Zeichenfolge, Dezimalzahl, Ganzzahl, Boolescher Wert, Datum, Uhrzeit,

  • Mit einfachen Worten , xsd ist eine weitere Möglichkeit, XML-Daten mit dem spezifischen Typ darzustellen und zu validieren.
  • Mit Hilfe zusätzlicher Attribute können wir mehrere Operationen ausführen.

  • Das Ausführen einer Aufgabe auf xsd ist einfacher als xml.

shubham1js
quelle
Hallo! Mit welchem ​​Programm erstelle ich eine XSD-Datei?
Judith
@ Judith Programm? Kannst du deine Frage erklären? wie Editor oder Sprache oder Tool?
shubham1js
1

Grundsätzlich definiert eine XSD-Datei, wie die XML-Datei aussehen soll. Es ist eine Schemadatei, die die Struktur der XML-Datei definiert. Es gibt also an, welche Felder möglich sind und wie groß sie sein werden.

Eine XML-Datei ist eine Instanz von XSD, da sie die in XSD definierten Regeln verwendet.

SelMez
quelle
0

XML hat eine viel breitere Anwendung als f.ex. HTML. Es gibt keine intrinsische oder standardmäßige "Anwendung". Obwohl es Ihnen vielleicht nicht wirklich wichtig ist, dass Webseiten auch von den zulässigen Bedingungen abhängen, möchten Sie vom Autor aus wahrscheinlich genau definieren, was ein XML-Dokument enthalten darf und was nicht.

Es ist wie beim Entwerfen einer Datenbank.

Die Sache mit XML-Technologien ist, dass sie textueller Natur sind. Mit XSD bedeutet dies, dass Sie über ein Framework zur Definition von Datenstrukturen verfügen, das in Textverarbeitungswerkzeuge wie PHP "eingesteckt" werden kann. Sie können also nicht nur die Daten selbst bearbeiten, sondern auch die Struktur sehr einfach ändern und dokumentieren und sogar Frontends automatisch generieren.

So gesehen ist XSD der "Klebstoff" oder die "Middleware" zwischen Daten (XML) und Datenverarbeitungswerkzeugen.

Hassbit
quelle