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
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://rpgnextgen.com" xmlns="https://rpgnextgen.com" elementFormDefault="qualified"> <!-- scheme description --> </xs:schema>
<?xml version="1.0"?> <daten xmlns="https://rpgnextgen.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://rpgnextgen.com rpgnextgen.xsd"> </daten>
XSD without Namespace
<?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="0.1"> </xs:schema>
<?xml version="1.0" encoding="utf-8" ?> <export xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rpgnextgen.xsd"> </export>