====== Validating XML with XSD (RPG) ======
dcl-proc main;
dcl-s filepath char(1024);
dcl-s domEnvData pointer inz(%addr(Qxml_DOMEXCDATA));
dcl-s parser pointer;
filepath = '/usr/local/example/xmlvalid/data.xml' + null;
// Initialize the XML environment, provide pointer to DOM exception
// data area. A call to QxmlInit must occur before any other API call.
QxmlInit(domEnvData);
// Create a new parser instance
parser = QxmlXercesDOMParser_new(domEnvData);
// Configure parser
QxmlXercesDOMParser_setValidationScheme(parser : Qxml_VALAU);
QxmlXercesDOMParser_setDoNamespaces(parser : true);
QxmlXercesDOMParser_setDoSchema(parser : true);
QxmlXercesDOMParser_setValidationSchemaFullChecking(parser : true);
// Parse xml file
QxmlXercesDOMParser_parse_SystemId(parser :%addr(filePath) : Qxml_JOBCCSID : 0);
// Check for parse error
if (Qxml_DOMRTNCOD = Qxml_DOMNOERROR);
message_info('XML Dokument entspricht dem XML Schema.');
else;
message_info(Qxml_RESERVE);
endif;
end-proc;
===== XSD with Namespace =====
===== XSD without Namespace =====
{{tag>devel ibm rpg xml}}