[Delphi/ XML] Afdwingen XML conform W3C XML-schema

Pagina: 1
Acties:

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:22

Tomatoman

Fulltime prutser

Topicstarter
In Delphi zitten aardige mogelijkheden om met XML-bestanden te werken, waaronder de TXMLDocument component. Nu heb ik XML-documenten die gemaakt zijn volgens een W3C XML-schema (een .xsd-bestand). Via TXMLDocument is het mogelijk om allerlei XML-elementen toe te voegen aan een XML-document, maar hoe dwing ik in Delphi af dat daarbij het XML-schema wordt aangehouden?

Ik heb al geprobeerd om eenvoudigweg in het XML-document een verwijzing te maken naar het XML-schema, maar doet lijkt geen enkel effect te hebben:
XML:
1
2
3
4
5
<?xml version="1.0"?>
<DocRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="MijnSchema.xsd">
  <Header>
    ...
Weet iemand een oplossing?

Een goede grap mag vrienden kosten.


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-08 18:56

alienfruit

the alien you never expected

Bij mijn weten kan dat niet tomatoman :)
Ik heb het zelf in ieder geval nog niet gezien, kun je geen andere componenten gebruiken die dit wel ondersteunen. Overigens lijkt me dit een kleine wijziging om te maken:-)

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:22

Tomatoman

Fulltime prutser

Topicstarter
OK, duidelijk antwoord.
* Tomatoman trekt zich terug in een stil hoekje om uit te huilen :|

Een goede grap mag vrienden kosten.


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Volgens mij kun je in Delphi wel de typelib van de MSXML 4.0 parser importeren. Die ondersteunt geloof ik wel schema validatie.

Cuyahoga .NET website framework


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:22

Tomatoman

Fulltime prutser

Topicstarter
Het heeft een paar uur klooien gekost, maar ik ben eruit. Mijn XML-document heeft nog steeds de aangegeven structuur. Het schema MijnSchema.xsd staat in dezelfde map als het XML-document. Om het document tijdens het parsen te valideren, blijk je de volgende property's te moeten instellen voor TXMLDocument:
Delphi:
1
2
3
XMLDocument1.FileName := 'C:\MijnXMLDocument.xml';
XMLDocument1.ParseOptions := [poResolveExternals, poValidateOnParse];
XMLDocument1.Active := True; // EDOMParseError als parser fouten constateert
Het lijkt allemaal niet zo belangrijk, maar op deze manier kan ik controleren of een document wel de XML-inhoud heeft die de applicatie verwacht. Nu moet ik nog een manier zien te vinden om te controleren of het document wel het juiste schema (.xsd) gebruikt.

[ Voor 5% gewijzigd door Tomatoman op 21-10-2003 01:41 . Reden: juiste exception class opgezocht ]

Een goede grap mag vrienden kosten.


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Overigens kun je ook eens kijken naar Relax NG, dat is veel bruikbaarder dan XML Schema.

Rustacean

Pagina: 1