When you parse an XML document that has an inline DTD, the XMLNSC parser does not put the DTD information into the message tree. However, by using ESQL code, you can add XML entity definitions to the message tree, and these definitions are used when the message tree is produced by the XMLNSC parser.
<BookInfo dtn="BookInfo" edn="author" edv="A.N.Other"/>
The
following output message is generated: <!DOCTYPE BookInfo [<!ENTITY author "A.N.Other">]>
<BookInfo><entref>&author;</entref></BookInfo>
The
ESQL to create the output message is: DECLARE cursor REFERENCE TO InputRoot.XMLNSC.BookInfo;
DECLARE docTypeName CHARACTER cursor.dtn;
DECLARE authorRef CHARACTER 'author';
-- Create <!DOCTYPE BOOKInfo …
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)* NAME = docTypeName;
-- Create <!ENTITY author "A.N.Other" > …
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType){docTypeName}.(XMLNSC.EntityDefinition) {authorRef} =
cursor.edv;
-- Create the entity reference
SET OutputRoot.XMLNSC.(XMLNSC.Folder){docTypeName}.(XMLNSC.EntityReference)entref = authorRef;