Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   C# Validierender XML-Parser? (https://www.delphipraxis.net/43920-validierender-xml-parser.html)

Chewie 10. Apr 2005 16:57


Validierender XML-Parser?
 
Ich experimentiere gerade mit XML und möchte mir für eine Anwendung ein Format definieren. Damit das alles korrekt ist (auch zu Dokumentationszwecken), habe ich auch eine DTD erstellt.

Nun stellt sich natürlich die Frage, mit welcher Software ich meine XML-Dateien gegen das DTD auf Validität prüfen kann. Eine Recherche brachte nur Hinweise auf kommerzielle Software, ich kann mir aber nicht vorstellen, dass bei der Verbreitung von XML sowas Alltägliches nicht als OpenSource- oder Freeware-Variante existiert.

Kennt da jemand was?

MathiasSimmack 10. Apr 2005 17:16

Re: Validierender XML-Parser?
 
Wahrscheinlich habe ich, trotz gewisser XML-Kenntnisse, nicht so die Ahnung von Validierung, denn ich habe bisher ganz einfach die eingebauten Möglichkeiten (von MS-XML bspw.) benutzt. Und da das Framework auch XML-Unterstützung enthält ...

Klärt mich mal jemand auf: Wozu braucht man beim Validieren seiner eigenen XML-Datei externe Software? :gruebel: Das PSDK zeigt, wie man mit einem XSD-Schema und einem JavaScript eine XML-Datei auf Gültigkeit prüfen kann (per MS-XML). Ich bin sicher, die gleichen Methoden gibt´s auch im .NET Framework. Nicht falsch verstehen, @Chewie. Hat nicht viel mit dir und deiner Frage zu tun.

Chewie 10. Apr 2005 17:22

Re: Validierender XML-Parser?
 
Zitat:

Zitat von MathiasSimmack
Das PSDK zeigt, wie man mit einem XSD-Schema und einem JavaScript eine XML-Datei auf Gültigkeit prüfen kann (per MS-XML). Ich bin sicher, die gleichen Methoden gibt´s auch im .NET Framework. Nicht falsch verstehen, @Chewie. Hat nicht viel mit dir und deiner Frage zu tun.


OK, was ist ein XSD-Schema? Ich bin nicht so XML bewandert, deshalb wäre es nett, wenn man mich aufklären würde ;)
Wenn ich keine zusätzliche Software brauche - umso besser. Ich will halt einfach nur eine Methode um zu überprüfen, ob meine XML-Dateien valide sind. Und nach dem Wenigen, was ich bisher von XML weiß, ist die Prüfung des DTDs die Methode dazu.

kiar 10. Apr 2005 17:36

Re: Validierender XML-Parser?
 
das schreibt meine OH:

Zitat:

Beschreibung
Die Schemadatei (.XSD) definiert die Struktur der Daten in der XML-Datei. Die XSD-Datei ist optional. Wenn die XSD-Datei vorhanden ist, verwendet Delphi diese Datei zur Deklaration der Metadaten der Datenmenge. Wenn keine XSD-Datei vorhanden ist, müssen Sie die Metadaten mit dem Tabelleneditor der Datenmenge bereitstellen. Dazu erstellen Sie eine Tabelle in der Tabellenkollektion für die Datenmenge. Die folgende Beispiel-XML-Datei enthält einige Datensätze. Sie erstellen die Metadaten für die Datenmenge, indem Sie die Tabelle und die Spalten entsprechend der Tabelle und der Spalten in der XML-Datei anlegen.

raik

MathiasSimmack 10. Apr 2005 17:36

Re: Validierender XML-Parser?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ein Hier im Forum suchenXSD-Schema erlaubt feinere Einstellungen. Du kannst festlegen, dass bspw. der Wert eines Attributes nur eine vierstellige Zahl sein darf. Oder es wird ein Dateiname mit einer bestimmten Endung erwartet, usw. Das lässt sich IMHO mit DTD schlecht machen.

Ich würde dir ja gern das XSD-Schema meiner Help 2.0-Registrierung abdrucken, aber das würde wohl zu umfangreich werden. Darum hau ich´s mal samt Beispiel-XML und Prüf-JavaScript in den Anhang (MS XML 4 wird aber benötigt). Einfach das Skript aufrufen, und es sollte dir zeigen, dass die XML-Datei gültig ist. Dann etwas in der XML-Datei rumfummeln, vllt. mal ein paar selbst erdachte Knoten eintragen und wieder prüfen lassen, usw.

Wie gesagt, mir persönlich reicht das aus. Mein Registrierungstool lädt die Datei und prüft die übergebene XML dann auf Gültigkeit. Ich meine, das Validieren übernimmt eigentlich der Parser. Mein Programm reagiert bloß auf den "errorCode".

Chewie 10. Apr 2005 17:38

Re: Validierender XML-Parser?
 
Ah, OK, ich schaus mir mal an.

Aber gibt es diese XSD-Dateien dann nur .NET/Windows-Bereich? Oder ist das ein allgemeiner XML-Standard?

MathiasSimmack 10. Apr 2005 17:42

Re: Validierender XML-Parser?
 
Das müsste Standard sein.

Chewie 10. Apr 2005 17:48

Re: Validierender XML-Parser?
 
OK, soweit ich das sehe, enthält ein XSD die gleichen Deklarationen wie ein DTD, nur wiederum im XML-Format.

Das heißt es gibt eine Meta-Sprache SGML, die eine Sprache namens XML definiert, die wiederum Meta-Sprache für andere Sprachen ist. Und die Sprache, die die Gültigkeit von XML-Dateien beschreibt (XSD), baut wiederum auf XML auf :shock:

Wenn man das das erste Mal liest, kommt es einem so vor, als beiße sich die Katze (nicht Sakura) in den Schwanz. Aber naja, Katzen haben ja neun Leben :mrgreen:

Schade an der ganzen geschichte ist nur, dass diese XSD etwas länglicher als DTDs sind.

MathiasSimmack 10. Apr 2005 18:10

Re: Validierender XML-Parser?
 
"länglich"? :gruebel: Im Sinne von "länger/größer/umfangreicher als eine DTD"? Na ja, die ganzen Dokumentationstags kannst du bspw. auch weglassen:
XML-Code:
<xs:annotation><xs:documentation>
  Help 2.0 Registration Validation Schema
  Copyright (c) 2005 Mathias Simmack
</xs:documentation></xs:annotation>
Ich habe sie bloß gesetzt, weil ich ein Tool habe, das aus dem Schema ein paar HTML-Seiten mit der Doku generiert. Im Prinzip das, was NDoc aus der XML-Dokumentation einer .NET-Klasse macht. :)

Und ich finde XSDs besser. Das Schema muss nicht in der XML-Datei angegeben werden. Es muss lediglich dem Programm (und damit dem XML-Parser) bekannt sein. Eine DTD sollte schon in der XML-Datei drin stehen, ansonsten musst du das IMHO erst umständlich einfügen, bevor du das Dokument validieren kannst.

Robert_G 10. Apr 2005 18:15

Re: Validierender XML-Parser?
 
nur mal so am Rande...
Man kann sich in .Net Klassen aus XSDs erzeugen lassen.
Auf dem Prinzip beruhen typisierte DataSets und die Proxyklassen für WebServices. :)
Du kannst damit deklarativ eine struktur vorgeben, die dann in Code umgesetzt werden kann.

@Topic
Ein, den Zugriffsklassen bekanntes, XSD bedeutet auch, dass du du nur valide Daten einlesen kannst. Du "müllst" dich also nicht mit strings zu, die eigentlich dateTimes oder Integer sein sollten. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz