![]() |
Funktion und Sinn von XML Schemata
Ich beschäftige mich gerade auf Geheiß meines Chefs mit XML Schemata. Mein Problem ist ein grundlegendes Verständnisproblem auf dass ich bisher noch keine Antwort gefunden habe. Alles, was ich bisher gefunden habe, bezog sich auf die Erstellung von XML Schemata, aber mein Problem ist:
Was sind XML Schemata? Wozu benötigt man sie? Wann setzt man sie ein? Wie funktionieren XML Schemata mit XML-Dateien zusammen? |
Re: Funktion und Sinn von XML Schemata
Schon mal
![]() |
Re: Funktion und Sinn von XML Schemata
Ja, aber wie gesagt, das
Zitat:
Zitat:
Ich bräuchte einfach eine Antwort, wie: "Ein XML-Schema macht das und das. Und man braucht es dafür. Und es kann hier sinnvoll eingesetzt werden." Das will ich wissen. ;) |
Re: Funktion und Sinn von XML Schemata
So schwer ist das gar nicht ein XML Schema beschreibt was alles in der XML möglich ist und ist primär dafür da um zu überprüfen ob eine XML Konform ist.
Ich hab die Schemas bis jetzt auch nur als Beschreibung der Felder in der XML gesehen um eine XML zu lesen und zu schreiben (Schnnittsstellenbeschreibung) |
Re: Funktion und Sinn von XML Schemata
Zitat:
|
Re: Funktion und Sinn von XML Schemata
Zitat:
Beispiel: folgende Struktur wurde vereinbart:
XML-Code:
Also das Element <Author> muss unterhalb des <Element> Verlag auftauchen und darf beliebig oft erscheinen.
<Verlag>
<Author> ... <Author/> <Author> ... <Author/> <Verlag/> Würde jetzt folgende XML-Datei auftauchen:
XML-Code:
dann kann man mit einem Schema sofort entscheiden "das ist falsch, <Verlag> darf nicht unter <Author> auftauchen" !
<Verlag>
<Author> <Verlag> ... <Verlag/> <Author/> <Author> ... <Author/> <Verlag/> Ein Schema geht aber noch wesentlich weiter; so kann z.B. definiert werden, welchen Inhalt die Element haben dürfen (String, Integer, float, boolean, GUID,...) |
Re: Funktion und Sinn von XML Schemata
Ah, ja. Das hilft mir schon mal sehr viel weiter in meinem Verständnis. Un dich nehme an diese Überprüfung kann man auch programmiertechnisch machen, in dem man eine XML-Datei läd und ein XML Schema vorgibt?
|
Re: Funktion und Sinn von XML Schemata
Als Beispiel kannst dir ja mal die XML- und XSL-Datei angucken, die bei der Registrierung der Tutorials-Hilfedokumente im Zielordner liegen. Ist das gleiche Prinzip. Das Tool wertet die XML-Datei mit Hilfe der XSL aus, und sollte irgendwas nicht passen, meldet sich der Parser unter Angabe des Fehlers usw.
btw, die Antwort auf deine Frage ist Ja. Bei Bedarf suche ich die Schnippsel aus dem CSharp- und/oder Delphitool raus. |
Re: Funktion und Sinn von XML Schemata
CSharp wäre nicht schlecht, weil ich es auch für C# dann bräuchte. Danke schon mal für eure Mühe.
|
Re: Funktion und Sinn von XML Schemata
Ist auch ziemlich nützlich, wenn man XML, für das man ein Schema besitzt, von Hand schreiben will: Mit einem brauchbaren Editor muss man nicht mehr für jedes Element in der Doku nachschauen, welche Attribute und Unterelemente erlaubt sind, per Intellisense schreibt sich das Dokument in einem Fluss.
Wenn XML nur zum Austausch von Daten zwischen zwei Programmen benutzt wird, könnten sich diese natürlich auch "privat" über die Struktur einigen, im Sinne von "Aha, ein Element A, das muss ein Element B als Child haben, denn so ist der Exporter eben programmiert". Ein XSD ist einfach eine öffentliche, formelle Formulierung dieser Übereinkunft, was besonders Drittanbietern die Arbeit erleichtert. Zitat:
|
Re: Funktion und Sinn von XML Schemata
Zitat:
![]() |
Re: Funktion und Sinn von XML Schemata
Zitat:
|
Re: Funktion und Sinn von XML Schemata
Zitat:
|
Re: Funktion und Sinn von XML Schemata
[quote="shmia"]
Zitat:
Ich habe es jetzt so probiert:
XML-Code:
Und
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema> <xs:element name="verlag"> <xs:sequence> <xs:element name="autor" type="xs:string"/> </xs:sequence> </xsd:schema>
XML-Code:
Der Firefox gibt mir jedoch folgende Fehlermeldung aus:
<?xml version="1.0" encoding="ISO-8859-1"?>
<artikel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="verlag.xsd"> <verlag> <autor>Hans Peter</autor> <autor>Klaus Müller</autor> </verlag> Zitat:
|
Re: Funktion und Sinn von XML Schemata
Zitat:
Es kommt aber (wie üblich beim Programmieren) auf die kleinen Details an. Ich kann dir den XML-Editor ![]() Wenn eine XML-Datei mit einem Schema verknüpft ist, prüft dieser es und unterstützt dich beim editieren. Wenn die XML-Datei nicht auf das Schema passt, gibt der Editor an wo das Problem besteht. |
Re: Funktion und Sinn von XML Schemata
Danke, ich werde mal gucken, wie weit ich damit komme.
|
Re: Funktion und Sinn von XML Schemata
Update.
Ich habe es jetzt so:
XML-Code:
Und
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="verlag"> <xs:sequence> <xs:element name="autor" type="xs:string"/> </xs:sequence> </xs:element> </xs:schema>
XML-Code:
Fehlermeldung von XMLPad lautet:
<?xml version="1.0" encoding="ISO-8859-1"?>
<artikel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="verlag.xsd"> <verlag> <autor>Hans Peter</autor> <autor>Klaus Müller</autor> </verlag> Zitat:
|
Re: Funktion und Sinn von XML Schemata
Hi Luckie,
ich hab in der zweiten Zeile (im <xs>-Tag) zusätzlich nach
XML-Code:
noch folgendes stehen
<xs: ... XMLSchema"
XML-Code:
Das heisst, dein XML-Schema müsste dann eigentlich so aussehen
elementFormDefault="qualified" attributeFormDefault="unqualified">
XML-Code:
Versuch mal ob es dann funkt. Frag mich aber bitte nicht genau was diese zwei Attribute sein sollen, habs auch nur aus einer Vorlage.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="verlag"> <xs:sequence> <xs:element name="autor" type="xs:string"/> </xs:sequence> </xs:element> </xs:schema> LG Alex |
Re: Funktion und Sinn von XML Schemata
Laut Visual Studio sollte das Schema zur XML so aussehen:
XML:
XML-Code:
Schema:
<?xml version="1.0" encoding="utf-8" ?>
<verlag> <autor>Hans Peter</autor> <autor>Klaus Müller</autor> </verlag>
XML-Code:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="verlag"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="autor" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
Re: Funktion und Sinn von XML Schemata
So geht es:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<verlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="verlag.xsd"> <autor>Hans Peter</autor> <autor>Klaus Müller</autor> </verlag>
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="verlag"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="autor" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
Re: Funktion und Sinn von XML Schemata
War Käse, was ich geschrieben habe.
Ich wollte das ganze jetzt etwas erweitern:
XML-Code:
Dazu habe ich mir folgendes Schema erstellt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<verlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="verlag02.xsd"> <buch> <titel>Der Duden</titel> <autor>Dieter Duderich</autor> <erschdat>1987</erschdat> <isbn>3-86680-192-9</isbn> </buch> <buch> <titel>Pflanzen</titel> <autor>Paul Pflanzer</autor> <erschdat>1996</erschdat> <isbn>3-12656-189-9</isbn> </buch> </verlag>
XML-Code:
In Zeile vier sagt er mir:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="verlag"> <xs:sequence> <xs:complexType name="buch"> <xs:sequence> <xs:element name="titel" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="erschdat" type="xs:string"/> <xs:element name="isbn" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:sequence> </xs:element> </xs:schema> Zitat:
So muss es aussehen:
XML-Code:
;)
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="ctbuch"> <xs:sequence> <xs:element name="titel" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="erschdat" type="xs:string"/> <xs:element name="isbn" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="verlag"> <xs:complexType> <xs:sequence> <xs:element name="buch" type="ctbuch" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
Re: Funktion und Sinn von XML Schemata
Zitat:
Zitat:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="verlag"> <xs:complexType> <xs:sequence> <xs:element name="buch" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="titel" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="erschdat" type="xs:string"/> <xs:element name="isbn" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
Re: Funktion und Sinn von XML Schemata
Ah, danke. Wurde als alternative aufgenommen.
|
Re: Funktion und Sinn von XML Schemata
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Damit kannst du dir schnell mal ein Dokumentenformat zusammen klicken. Ich nutze das Ding schon seit Jahren . :-) Du kannst auch einfach eine XML im studio öffnen und dir aus der XML ein XSD geneieren lassen, was du dann als Fundament nehmen kannst. Ich habe mal Klarabellas (:mrgreen:) Version damit etwas aufgewertet:
XML-Code:
Aber IMO sind da zu viele Elemente. Die ISBN und das Datum hätten Attribute sein können, Titel und Author eigentlich auch...
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="www.luckie.de/BuchBleistift" xmlns:bv="www.luckie.de/BuchBleistift" elementFormDefault="qualified"> <xs:element name="verlag"> <xs:complexType> <xs:sequence> <xs:element name="buch" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="titel" type="xs:string" /> <xs:element name="autor"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="erschdat" type="xs:date" /> <xs:element name="isbn" type="bv:isbnType"> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="isbnType"> <xs:restriction base="xs:string"> <xs:pattern value="[0-9]{3}[-][0-9]{3}[-][0-9]{3}" /> </xs:restriction> </xs:simpleType> </xs:schema> Und wer so dumme, abgekürzte Bezeichner wie "erschtdat" in ein wirkliches Schema packen würde (nicht wie hier einen Bleistift), gehört in den Knast... :shock: Und zum Validieren in deinem Code kannst du dir mal die Klasse XmlSchemaSet ansehen. |
Re: Funktion und Sinn von XML Schemata
Dank dir auch noch mal für deine Mühe, aber das kann XMLPad auch. ;) Aber gut, dass du das mit dem VS erwähnst. Dann kann ich jetzt schon zwei Programm erwähnen die man als Editoren nutzen kann. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz