Ga naar inhoud

[Delphi5] Hoe een DOMdocument met SAX-parser valideren ?


Aanbevolen berichten

Met behulp van de COM-objecten van MSXML4.dll kan ik wel een bestandsnaam aan een SAX-parser-COM-object doorgeven en laten valideren. Maar het lukt me niet om hetzelfde met een DOMdoc te doen, terwijl dat volgens deze link : http://msdn.microsoft.com/library/en-us/xmlsdk/htm/sax_devgd_hdi_domtosax_56bb.asp?frame=true Toch wel moet kunnen ... probleem : het voorbeeld staat in VB geschreven op de site en de Delphi-vertaling lukt niet. -- edit -- beter gezegd, wat is de Delphi-vertaling van dit stuk [code:1:a105ba98ef] ... // Set the XML writer to the SAX content handler. Set rdr.contentHandler = wrt Set rdr.dtdHandler = wrt Set rdr.errorHandler = wrt ... [/code:1:a105ba98ef] Als ik er van uit ga dat ik dit : [code:1:a105ba98ef] Dim wrt As New MXXMLWriter40 [/code:1:a105ba98ef] moet vertalen als : [code:1:a105ba98ef] var wrt : TMXXMLWriter40 begin wrt := TMXXMLWriter40.Create(Nil); ... [/code:1:a105ba98ef] ---------- Als ik ipv dat gewoon het DomDoc via reader.parse() doorgeef, dan wordt er niet tegen het schema gevalideerd (tenminste : er volgen geen foutmeldingen over de inhoud v/h XML-bericht terwijl dat wel zou moeten!), terwijl dat in de 'normale' versie wel deed. Enige hints ?
Link naar reactie
oftewel : waar is Bill Gates nu helemaal mee bezig ? ;) [code:1:0b91a4a160] procedure TMyOwnValidator.ValidateDOM(aDoc, aSchema, aBusinessrules: OleVariant; out aErrorlog: OleVariant); begin FValidator.ClearErrors; // FValidator.ErrorDomDoc := aErrorLog; //Add the schema file to the schema cache. FSchemaCache.DefaultInterface.add('', aSchema); //Configure the SAX reader to validate the XML document. FXmlReader.DefaultInterface.putFeature('schema-validation', True); FXmlReader.DefaultInterface.putFeature('exhaustive-errors', True); FXmlReader.DefaultInterface.putFeature('http://xml.org/sax/features/namespace-prefixes', True); FXmlReader.DefaultInterface.putFeature('http://xml.org/sax/features/external-parameter-entities', True); FXmlReader.DefaultInterface.putProperty('schemas', FSchemaCache.DefaultInterface); aDoc.schemas := FSchemaCache.DefaultInterface; //Assign an instance of the MyValidator class to //the errorHandler property of the SAX reader. FXmlReader.DefaultInterface.errorHandler := FValidator; FXmlReader.DefaultInterface.contentHandler := Nil; //Parse and validate the file. FXmlReader.parse(aDoc.documentElement.Xml); // return error-log aErrorLog := FValidator.ErrorDomDoc; end; [/code:1:0b91a4a160] logisch ? ...
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...