<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content="MSHTML 5.00.2314.1000" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Hi There,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>This is my first posting to XML-Dev. Great mailing 
list. I have been using the IBM XML4J Parser (v2.0.9) class for just a short 
while. The client has requested that we inline the DTD's instead of making them 
external.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I resorted to the following sample 
code,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parser p 
= new Parser(getDefaultDTDPath(), this, 
null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DTD aDTD = null 
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
BufferedReader b = new BufferedReader(new FileReader("SampleDTD.dtd")) 
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aDTD = 
p.readDTDStream(b) 
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
b.close() ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException 
ex) { }<BR></FONT><FONT face=Arial 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
aDTD.setName("CustomerDataResponse") 
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringWriter aWriter = new 
StringWriter();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
aDTD.print(aWriter) ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch 
(IOException ex) {}<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
System.out.println(aWriter.toString()) ;<BR></FONT></DIV>
<DIV><FONT face=Arial size=2>Used on the following XML file (with inline 
DTD),</FONT></DIV><FONT size=2>
<P align=left><FONT face=Arial>&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;<BR>&lt;!DOCTYPE CustomerDataResponse [<BR>&lt;!ELEMENT 
CustomerDataResponse (pass|fail)&gt;<BR>&lt;!ATTLIST CustomerDataResponse 
accountNumber CDATA #REQUIRED&gt;<BR>&lt;!ELEMENT pass 
(question*)&gt;<BR>&lt;!ELEMENT question (#PCDATA)&gt;<BR>&lt;!ATTLIST question 
questionId ID 
#REQUIRED<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
answers CDATA #IMPLIED&gt;<BR>&lt;!ELEMENT fail (reason)&gt;<BR>&lt;!ELEMENT 
reason (#PCDATA)&gt;<BR>]&gt;<BR></FONT></P></FONT><FONT size=2></FONT>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Produces the results,</FONT></DIV>
<DIV><FONT face=Arial size=2>
<P align=left><FONT face=Arial>&lt;!DOCTYPE CustomerDataResponse 
[<BR>&lt;!ATTLIST CustomerDataResponse accountNumber CDATA 
#REQUIRED&gt;<BR>&lt;!ELEMENT pass (question*)&gt;<BR>&lt;!ELEMENT question 
(#PCDATA)&gt;<BR>&lt;!ATTLIST question questionId ID 
#REQUIRED<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
answers CDATA #IMPLIED&gt;<BR>&lt;!ELEMENT fail (reason)&gt;<BR>&lt;!ELEMENT 
reason (#PCDATA)&gt;<BR>]&gt;<BR></FONT></P></FONT></DIV>
<DIV><FONT face=Arial size=2>Note that there is no line,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&lt;!ELEMENT CustomerDataResponse 
(pass|fail)&gt;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Which totally invalidates the DTD.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Now the interesting thing is that if I duplicate 
this line in the original DTD, i.e.,</FONT></DIV>
<DIV><FONT face=Arial size=2>
<P align=left><FONT face=Arial>&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;<BR>&lt;!DOCTYPE CustomerDataResponse [<BR>&lt;!ELEMENT 
CustomerDataResponse (pass|fail)&gt;<BR>&lt;!ELEMENT CustomerDataResponse 
(pass|fail)&gt;<BR>&lt;!ATTLIST CustomerDataResponse accountNumber CDATA 
#REQUIRED&gt;<BR>&lt;!ELEMENT pass (question*)&gt;<BR>&lt;!ELEMENT question 
(#PCDATA)&gt;<BR>&lt;!ATTLIST question questionId ID 
#REQUIRED<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
answers CDATA #IMPLIED&gt;<BR>&lt;!ELEMENT fail (reason)&gt;<BR>&lt;!ELEMENT 
reason (#PCDATA)&gt;<BR>]&gt;<BR></FONT></P></FONT></DIV>
<DIV><FONT face=Arial size=2>It produces the desired results!! </FONT><FONT 
face=Arial size=2>Anyone found similiar results? I can't think of anything that 
I'm doing wrong.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;</DIV></FONT>
<DIV><FONT face=Arial size=2>Carl Schei<BR>Catapult Technology, Inc.<BR>(630) 
515-3670 phone<BR><A 
href="mailto:carl@catapultt.com">carl@catapultt.com</A><BR><A 
href="http://www.catapultt.com/">http://www.catapultt.com/</A><BR></FONT></DIV></BODY></HTML>