2009-09-30 8 views
5

Tôi đã cố gắng để revrite một ví dụ JScript tại MSDN để xác nhận hợp lệ XML đối với các lược đồ nhất định.Delphi: XML không hợp lệ được thông qua xác thực MSXML

Là cách đầu tiên, tôi đã sử dụng tệp sl-valid.xml, sl-notValid.xml và sl.xsd như được sử dụng trong ví dụ.

Mã của tôi diễn ra như sau:

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; 

Khi tôi cố gắng tập tin sl-notValid.xml, tôi vẫn nhận được 'XML xác nhận OK'. Có ai nhìn thấy điều này trước đây không? Sự khác biệt cơ bản giữa mã ở trên và mã số của JScript examle http://msdn.microsoft.com/en-us/library/ms764717%28VS.85%29.aspx là gì?

Trả lời

8

thử

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; 

Giải thích điều này, bạn phải gọi một cách rõ ràng một nhà xây dựng một phiên bản có hỗ trợ cho XSD schema xác nhận (MSXML> = 4).

Tạm biệt.

+0

Cảm ơn rất nhiều, RRUZ! – conciliator