2009-09-30 11 views
5

J'ai essayé de réécrire un exemple JScript sur MSDN afin de valider le code XML sur certains schémas. En tant que premier attmempt, j'ai utilisé les fichiers sl-valid.xml, sl-notValid.xml et sl.xsd comme dans l'exemple ci-dessous.Delphi: XML non valide passe par la validation MSXML

Mon code est le suivant:

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; 

Lorsque je tente le fichier sl-notValid.xml, je reçois encore 'validation XML OK'. Est-ce que quelqu'un a déjà vu ça? Quelle est la différence fondamentale entre le code ci-dessus et celui de l'exemple JScript http://msdn.microsoft.com/en-us/library/ms764717%28VS.85%29.aspx?

Répondre

8

essayer cette

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; 

Explication, vous devez appeler explicitement un constructeur d'une version qui prennent en charge la validation de schéma XSD (MSXML> = 4).

Salut.

+0

Merci beaucoup, RRUZ! – conciliator

Questions connexes