2009-09-30 11 views
5

Ich habe versucht, ein JScript-Beispiel bei MSDN zu revitalisieren, um XML gegen bestimmte Schemas zu validieren.Delphi: Ungültiger XML-Code durchläuft MSXML-Validierung

Als erstes Beispiel habe ich die im Beispiel verwendeten Dateien sl-valid.xml, sl-notValid.xml und sl.xsd verwendet.

Mein Code sieht wie folgt aus:

procedure BasicValidation(FileName: string); 
var 
    XML: IXMLDOMDocument2; 
begin 
    // Load XML and resolve externals 
    XML := ComsDOMDocument.Create; 
    XML.async := False; 
    XML.validateOnParse := True; 
    XML.resolveExternals := True; 
    XML.setProperty('SelectionLanguage', 'XPath'); 
    XML.setProperty('SelectionNamespaces', 'xmlns:x=''urn:book'''); 
    XML.load(FileName); 
    if XML.parseError.errorCode <> 0 then 
    ShowMessage('Error parsing. Reason: ' + XML.parseError.reason) 
    else 
    ShowMessage('XML validation OK.'); 
end; 

Als ich die sl-notValid.xml Datei versuchen, habe ich noch 'XML-Validierung OK' erhalten. Hat das jemand schon mal gesehen? Was ist der grundlegende Unterschied zwischen dem obigen Code und dem JScript-Beispiel http://msdn.microsoft.com/en-us/library/ms764717%28VS.85%29.aspx?

Antwort

8

dieses

procedure BasicValidation(FileName: string); 
var 
    XML: IXMLDOMDocument2; 
begin 
    XML := CoDOMDocument40.Create; 
    XML.async := False; 
    XML.validateOnParse := True; 
    XML.resolveExternals := True; 
    XML.setProperty('SelectionLanguage', 'XPath'); 
    XML.setProperty('SelectionNamespaces', 'xmlns:x=''urn:book'''); 
    XML.load(FileName); 
    if XML.parseError.errorCode <> 0 then 
    ShowMessage('Error parsing. Reason: ' + XML.parseError.reason) 
    else 
    ShowMessage('XML validation OK.'); 
end; 

Erklärung versuchen, müssen Sie explizit einen Konstruktor einer Version aufrufen, die für XSD-Schema-Validierung unterstützen (MSXML> = 4).

Tschüss.

+0

Vielen Dank, RRUZ! – conciliator