2009-09-30 21 views
5

Próbowałem ponownie zgłosić przykład JScript na MSDN w celu sprawdzenia poprawności XML względem niektórych schematów.Delphi: Nieprawidłowy XML przechodzi przez walidację MSXML

Jako pierwszy przykład użyłem plików sl-valid.xml, sl-notValid.xml i sl.xsd, jak użyto w przykładzie.

Mój kod wygląda następująco:

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; 

Kiedy próbuję plik sl-notValid.xml, wciąż otrzymuję 'zatwierdzanie OK XML'. Czy ktoś już to widział? Jaka jest zasadnicza różnica między powyższym kodem a kodem JScript http://msdn.microsoft.com/en-us/library/ms764717%28VS.85%29.aspx?

Odpowiedz

8

spróbować tej

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; 

wyjaśnień, należy jawnie wywołać konstruktora wersji, która obsługuje do sprawdzania poprawności schematu XSD (MSXML> = 4).

Pa.

+0

Wielkie dzięki, RRUZ! – conciliator

Powiązane problemy