Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML mit XSD( Schema) validieren (https://www.delphipraxis.net/121173-xml-mit-xsd-schema-validieren.html)

Horu98716 23. Sep 2008 14:09


XML mit XSD( Schema) validieren
 
Hallo XML-Freaks,

habe mit Delphi7 ein Tool geschrieben, das xml-files mit bekannter Struktur in eine oder mehrere Datenbanktabellen transformiert.Jetzt möchte ich die xml-files gegen ein xsd-file validieren. Ich verwende ixmldocument zur Verarbeitung. Kann mir sogar den Namen der Schemadatei anzeigen lassen.(Eigenschaft : schemaRef von IXMLdocument). Wenn ich einen Fehler simuliere, dann spuckt mir z.B. xlmspy die genau Position aus. Mein Delphi-Programm ignoriert Fehler, die sich auf eine Validierung beziehen. Ist es mit ixmldocument überhaupt möglich, Daten zu checken ?
Dieses Problem dürfte von allgemeinem Interesse sein, da DTD's zur Datenüberprüfung nicht mehr up to date sind.

Danke für Eure Hinweise !!

Horu98716

Horu98716 23. Sep 2008 16:25

Re: XML mit XSD( Schema) validieren
 
Hallo Leute,

Problem : Validierung eines XML-Dokuments mit XSD-Schema.

Lösung: anstatt ixmlDocument-Interface verwende ich die Komponente TXMLDocument
als Vendor : xerces XML verwenden
Eigenschaft: poValidateOnParse -> true

Dann funktioniert auch der Check gegen ein Schema-File(xsd)(auch mit neueren Versionen z.B. Delphi2006).

Horu98716

P.S. Offensichtlich sind die Parser MSXML und OpenXML nicht für Validierung mit XSD's ausgelegt !!

Alaitoc 6. Feb 2009 14:20

Re: XML mit XSD( Schema) validieren
 
Zitat:

P.S. Offensichtlich sind die Parser MSXML und OpenXML nicht für Validierung mit XSD's ausgelegt !!
Ich benutze Delphi 7 und habe trotz dieses Satzes mich an MSXML und die IXMLDOM Komponenten (MSXML 4 und MSXML 6) gewagt, also ich kann Schemas validieren...jedoch müssen z.b. der angegebene Namespace im Programm und der Schemareferenz übereinstimmen und es ist scheinbar nicht möglich mehr als einen ParseError (ebenfalls Fehler der Schemaüberprüfung werden hier angegeben) auszugeben...zumindest hab ich es bisher nicht hingekriegt...obwohl es zumindest ein Property namens MultipleErrorMessages gibt.

MfG Alaitoc


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 Uhr.

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