source: NonGTP/Xerces/xerces/doc/html/faq-parse.html @ 358

Revision 358, 112.0 KB checked in by bittner, 19 years ago (diff)

xerces added

Line 
1<HTML><HEAD><META content="text/html; charset=utf8" http-equiv="Content-Type"><SCRIPT language="JavaScript" src="resources/script.js" type="text/javascript"></SCRIPT><TITLE>Programming/Parsing FAQs</TITLE></HEAD><BODY alink="#ff0000" bgcolor="#ffffff" leftmargin="4" link="#0000ff" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#0000aa"><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" height="60" rowspan="3" valign="top" width="135"><IMG border="0" height="60" hspace="0" src="resources/logo.gif" vspace="0" width="135"></TD><TD align="left" colspan="4" height="5" valign="top" width="456"><IMG border="0" height="5" hspace="0" src="resources/line.gif" vspace="0" width="456"></TD><TD align="left" height="60" rowspan="3" valign="top" width="29"><IMG border="0" height="60" hspace="0" src="resources/right.gif" vspace="0" width="29"></TD></TR><TR><TD align="left" bgcolor="#0086b2" colspan="4" height="35" valign="top" width="456"><IMG alt="" border="0" height="35" hspace="0" src="graphics/faq-parse-header.jpg" vspace="0" width="456"></TD></TR><TR><TD align="left" height="20" valign="top" width="168"><IMG border="0" height="20" hspace="0" src="resources/bottom.gif" vspace="0" width="168"></TD><TD align="left" height="20" valign="top" width="96"><A href="http://xml.apache.org/" onMouseOut="rolloverOff('xml');" onMouseOver="rolloverOn('xml');" target="new"><IMG alt="http://xml.apache.org/" border="0" height="20" hspace="0" name="xml" onLoad="rolloverLoad('xml','resources/button-xml-hi.gif','resources/button-xml-lo.gif');" src="resources/button-xml-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.apache.org/" onMouseOut="rolloverOff('asf');" onMouseOver="rolloverOn('asf');" target="new"><IMG alt="http://www.apache.org/" border="0" height="20" hspace="0" name="asf" onLoad="rolloverLoad('asf','resources/button-asf-hi.gif','resources/button-asf-lo.gif');" src="resources/button-asf-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.w3.org/" onMouseOut="rolloverOff('w3c');" onMouseOver="rolloverOn('w3c');" target="new"><IMG alt="http://www.w3.org/" border="0" height="20" hspace="0" name="w3c" onLoad="rolloverLoad('w3c','resources/button-w3c-hi.gif','resources/button-w3c-lo.gif');" src="resources/button-w3c-lo.gif" vspace="0" width="96"></A></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" valign="top" width="120"><IMG border="0" height="14" hspace="0" src="resources/join.gif" vspace="0" width="120"><BR>
2
3 
4<A href="../index.html" onMouseOut="rolloverOff('side-ext-2');" onMouseOver="rolloverOn('side-ext-2');"><IMG alt="Home" border="0" height="12" hspace="0" name="side-ext-2" onLoad="rolloverLoad('side-ext-2','graphics/ext-2-label-2.jpg','graphics/ext-2-label-3.jpg');" src="graphics/ext-2-label-3.jpg" vspace="0" width="120"></A><BR>
5
6
7
8  <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
9
10     <A href="index.html" onMouseOut="rolloverOff('side-index');" onMouseOver="rolloverOn('side-index');"><IMG alt="Readme" border="0" height="12" hspace="0" name="side-index" onLoad="rolloverLoad('side-index','graphics/index-label-2.jpg','graphics/index-label-3.jpg');" src="graphics/index-label-3.jpg" vspace="0" width="120"></A><BR>
11     <A href="releases.html" onMouseOut="rolloverOff('side-releases');" onMouseOver="rolloverOn('side-releases');"><IMG alt="Release Info" border="0" height="12" hspace="0" name="side-releases" onLoad="rolloverLoad('side-releases','graphics/releases-label-2.jpg','graphics/releases-label-3.jpg');" src="graphics/releases-label-3.jpg" vspace="0" width="120"></A><BR>
12     
13     
14
15
16
17
18  <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
19
20     <A href="install.html" onMouseOut="rolloverOff('side-install');" onMouseOver="rolloverOn('side-install');"><IMG alt="Installation" border="0" height="12" hspace="0" name="side-install" onLoad="rolloverLoad('side-install','graphics/install-label-2.jpg','graphics/install-label-3.jpg');" src="graphics/install-label-3.jpg" vspace="0" width="120"></A><BR>
21     <A href="http://xml.apache.org/xerces-c/download.cgi" onMouseOut="rolloverOff('side-ext-18');" onMouseOver="rolloverOn('side-ext-18');"><IMG alt="Download" border="0" height="12" hspace="0" name="side-ext-18" onLoad="rolloverLoad('side-ext-18','graphics/ext-18-label-2.jpg','graphics/ext-18-label-3.jpg');" src="graphics/ext-18-label-3.jpg" vspace="0" width="120"></A><BR>
22     <A href="build.html" onMouseOut="rolloverOff('side-build');" onMouseOver="rolloverOn('side-build');"><IMG alt="Build Instructions" border="0" height="12" hspace="0" name="side-build" onLoad="rolloverLoad('side-build','graphics/build-label-2.jpg','graphics/build-label-3.jpg');" src="graphics/build-label-3.jpg" vspace="0" width="120"></A><BR>
23     
24     
25     
26
27  <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
28
29     <A href="faqs.html" onMouseOut="rolloverOff('side-faqs');" onMouseOver="rolloverOn('side-faqs');"><IMG alt="FAQs" border="0" height="12" hspace="0" name="side-faqs" onLoad="rolloverLoad('side-faqs','graphics/faqs-label-2.jpg','graphics/faqs-label-3.jpg');" src="graphics/faqs-label-3.jpg" vspace="0" width="120"></A><BR>
30
31     <A href="samples.html" onMouseOut="rolloverOff('side-samples');" onMouseOver="rolloverOn('side-samples');"><IMG alt="Samples" border="0" height="12" hspace="0" name="side-samples" onLoad="rolloverLoad('side-samples','graphics/samples-label-2.jpg','graphics/samples-label-3.jpg');" src="graphics/samples-label-3.jpg" vspace="0" width="120"></A><BR>
32     
33     
34     
35     
36     
37     
38     
39     
40     
41     
42     
43     
44     
45     
46     
47
48     <A href="api.html" onMouseOut="rolloverOff('side-api');" onMouseOver="rolloverOn('side-api');"><IMG alt="API Docs" border="0" height="12" hspace="0" name="side-api" onLoad="rolloverLoad('side-api','graphics/api-label-2.jpg','graphics/api-label-3.jpg');" src="graphics/api-label-3.jpg" vspace="0" width="120"></A><BR>
49
50  <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
51
52     <A href="ApacheDOMC++Binding.html" onMouseOut="rolloverOff('side-ext-68');" onMouseOver="rolloverOn('side-ext-68');"><IMG alt="DOM C++ Binding" border="0" height="12" hspace="0" name="side-ext-68" onLoad="rolloverLoad('side-ext-68','graphics/ext-68-label-2.jpg','graphics/ext-68-label-3.jpg');" src="graphics/ext-68-label-3.jpg" vspace="0" width="120"></A><BR>
53
54     <A href="program.html" onMouseOut="rolloverOff('side-program');" onMouseOver="rolloverOn('side-program');"><IMG alt="Programming" border="0" height="12" hspace="0" name="side-program" onLoad="rolloverLoad('side-program','graphics/program-label-2.jpg','graphics/program-label-3.jpg');" src="graphics/program-label-3.jpg" vspace="0" width="120"></A><BR>
55     
56     
57     
58     
59     
60     
61     
62
63     <A href="migrate.html" onMouseOut="rolloverOff('side-migrate');" onMouseOver="rolloverOn('side-migrate');"><IMG alt="Migration Guide" border="0" height="12" hspace="0" name="side-migrate" onLoad="rolloverLoad('side-migrate','graphics/migrate-label-2.jpg','graphics/migrate-label-3.jpg');" src="graphics/migrate-label-3.jpg" vspace="0" width="120"></A><BR>
64     
65     
66  <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
67
68  <A href="feedback.html" onMouseOut="rolloverOff('side-feedback');" onMouseOver="rolloverOn('side-feedback');"><IMG alt="Feedback" border="0" height="12" hspace="0" name="side-feedback" onLoad="rolloverLoad('side-feedback','graphics/feedback-label-2.jpg','graphics/feedback-label-3.jpg');" src="graphics/feedback-label-3.jpg" vspace="0" width="120"></A><BR>
69  <A href="bug-report.html" onMouseOut="rolloverOff('side-bug-report');" onMouseOver="rolloverOn('side-bug-report');"><IMG alt="Bug-Reporting" border="0" height="12" hspace="0" name="side-bug-report" onLoad="rolloverLoad('side-bug-report','graphics/bug-report-label-2.jpg','graphics/bug-report-label-3.jpg');" src="graphics/bug-report-label-3.jpg" vspace="0" width="120"></A><BR>
70  <A href="pdf.html" onMouseOut="rolloverOff('side-pdf');" onMouseOver="rolloverOn('side-pdf');"><IMG alt="PDF Document" border="0" height="12" hspace="0" name="side-pdf" onLoad="rolloverLoad('side-pdf','graphics/pdf-label-2.jpg','graphics/pdf-label-3.jpg');" src="graphics/pdf-label-3.jpg" vspace="0" width="120"></A><BR>
71
72  <IMG border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR>
73
74   
75<A href="http://xml.apache.org/websrc/cvsweb.cgi/xml-xerces/c/" onMouseOut="rolloverOff('side-ext-100');" onMouseOver="rolloverOn('side-ext-100');"><IMG alt="CVS Repository" border="0" height="12" hspace="0" name="side-ext-100" onLoad="rolloverLoad('side-ext-100','graphics/ext-100-label-2.jpg','graphics/ext-100-label-3.jpg');" src="graphics/ext-100-label-3.jpg" vspace="0" width="120"></A><BR>
76
77   
78<A href="http://marc.theaimsgroup.com/?l=xerces-c-dev" onMouseOut="rolloverOff('side-ext-102');" onMouseOver="rolloverOn('side-ext-102');"><IMG alt="Mail Archive" border="0" height="12" hspace="0" name="side-ext-102" onLoad="rolloverLoad('side-ext-102','graphics/ext-102-label-2.jpg','graphics/ext-102-label-3.jpg');" src="graphics/ext-102-label-3.jpg" vspace="0" width="120"></A><BR>
79
80
81<IMG border="0" height="14" hspace="0" src="resources/close.gif" vspace="0" width="120"><BR></TD><TD align="left" valign="top" width="500"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Questions</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif"><UL><LI><A href="#faq-1">Does Xerces-C++ support Schema?</A></LI><LI><A href="#faq-2">Why Xerces-C++ does not support this particular Schema feature?</A></LI><LI><A href="#faq-3">Why does my application crash when instantiating the parser?</A></LI><LI><A href="#faq-4">Is it OK to call the XMLPlatformUtils::Initialize/Terminate pair of routines multiple times in one program?</A></LI><LI><A href="#faq-5">Why does my application crash or hang if XMLPlatformUtils::Initialize()/Terminate() pair is called more than once?</A></LI><LI><A href="#faq-6">Why does my application crash after calling XMLPlatformUtils::Terminate()?</A></LI><LI><A href="#faq-7">I'm suddenly getting segfaults with Xerces-C 2.3.0; why might this be?</A></LI><LI><A href="#faq-8">Is Xerces-C++ thread-safe?</A></LI><LI><A href="#faq-9">I am seeing memory leaks in Xerces-C++. Are they real?</A></LI><LI><A href="#faq-10">I find memory leaks in Xerces-C++. How do I eliminate it?</A></LI><LI><A href="#faq-11">Can Xerces-C++ create an XML skeleton based on a DTD</A></LI><LI><A href="#faq-12">Can I use Xerces-C++ to perform write validation</A></LI><LI><A href="#faq-13">Can I validate the data contained in a DOM tree?</A></LI><LI><A href="#faq-14">How to write out a DOM tree into a string or an XML file?</A></LI><LI><A href="#faq-15">Why does DOMNode::cloneNode() not clone the pointer assigned to a DOMNode via DOMNode::setUserData()?</A></LI><LI><A href="#faq-16">How are entity reference nodes handled in DOM?</A></LI><LI><A href="#faq-17">What kinds of URLs are currently supported in Xerces-C++?</A></LI><LI><A href="#faq-18">How can I add support for URLs with HTTP/FTP protocols?</A></LI><LI><A href="#faq-19">Can I use Xerces-C++ to parse HTML?</A></LI><LI><A href="#faq-20">I keep getting an error: &quot;invalid UTF-8 character&quot;. What's wrong?</A></LI><LI><A href="#faq-21">What encodings are supported by Xerces-C / XML4C?</A></LI><LI><A href="#faq-22">What character encoding should I use when creating XML documents?</A></LI><LI><A href="#faq-23">Is EBCDIC supported?</A></LI><LI><A href="#faq-24">Why does deleting a transcoded string result in assertion on windows?</A></LI><LI><A href="#faq-25">How do I transcode to/from something besides the local code page?</A></LI><LI><A href="#faq-26">Why does setProperty not work?</A></LI><LI><A href="#faq-27">Why does getProperty not work?</A></LI><LI><A href="#faq-28">Why does the parser still try to locate the DTD even validation is turned off and how to ignore external DTD reference?</A></LI><LI><A href="#faq-29">Why do I get segmentation fault when running on Redhat Linux?</A></LI><LI><A href="#faq-30">Why does the XML data generated by the DOMWriter does not match my original XML input?</A></LI><LI><A href="#faq-31">Why does my application crash when deleting the parser after releasing a document?</A></LI><LI><A href="#faq-32">Why do we have two versions of some XMLString methods (one with memory manager and one without)?</A></LI></UL></FONT></TD></TR></TABLE><BR><BR><A name="faq-1"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B> Does Xerces-C++ support Schema?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
82
83      <P>Yes.  The Xerces-C++ 2.6.0 contains an implementation
84         of the W3C XML Schema Language, a recommendation of the Worldwide Web Consortium
85         available in three parts:
86         <A href="http://www.w3.org/TR/xmlschema-0/">XML Schema: Primer</A> and
87         <A href="http://www.w3.org/TR/xmlschema-1/">XML Schema: Structures</A> and
88         <A href="http://www.w3.org/TR/xmlschema-2/">XML Schema: Datatypes</A>.
89         We consider this implementation complete.  See
90         <A href="schema.html#limitation">the Schema page</A> for limitations.</P>
91
92    </FONT></TD></TR></TABLE><BR><A name="faq-2"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B> Why Xerces-C++ does not support this particular Schema feature?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
93
94      <P>The Xerces-C++ 2.6.0 contains an implementation
95         of the W3C XML Schema Language, a recommendation of the Worldwide Web Consortium
96         available in three parts:
97         <A href="http://www.w3.org/TR/xmlschema-0/">XML Schema: Primer</A> and
98         <A href="http://www.w3.org/TR/xmlschema-1/">XML Schema: Structures</A> and
99         <A href="http://www.w3.org/TR/xmlschema-2/">XML Schema: Datatypes</A>.
100         We consider this implementation complete.  See
101         <A href="schema.html#limitation">the Schema page</A> for limitations.</P>
102
103      <P>If you find any Schema feature which is specified in the W3C XML Schema Language
104         Recommendation does not work with Xerces-C++ 2.6.0, we encourage
105         the submission of bugs as described in
106         <A href="bug-report.html">Bug Reporting</A> page.
107       </P>
108
109    </FONT></TD></TR></TABLE><BR><A name="faq-3"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does my application crash when instantiating the parser?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
110
111      <P>In order to work with the Xerces-C++ parser, you have to first
112        initialize the XML subsystem. The most common mistake is to forget this
113        initialization. Before you make any calls to Xerces-C++ APIs, you must
114        call XMLPlatformUtils::Initialize(): </P>
115
116<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
117try {
118   XMLPlatformUtils::Initialize();
119}
120catch (const XMLException&amp; toCatch) {
121   // Do your failure processing here
122}</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
123
124      <P>This initializes the Xerces system and sets its internal
125        variables. Note that you must the include <CODE><FONT face="courier, monospaced">xercesc/util/PlatformUtils.hpp</FONT></CODE> file for this to work.</P>
126
127    </FONT></TD></TR></TABLE><BR><A name="faq-4"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Is it OK to call the XMLPlatformUtils::Initialize/Terminate pair of routines multiple times in one program?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
128      <P>Yes.  Since Xerces-C++ 1.5.2, the code has been enhanced so that
129         calling XMLPlatformUtils::Initialize/Terminate pair of routines
130         multiple times in one process is now allowed.
131      </P>
132
133      <P>But the application needs to guarantee that only one thread has entered either the
134        method XMLPlatformUtils::Initialize() or the method XMLPlatformUtils::Terminate() at any
135        one time.</P>
136
137      <P>If you are calling XMLPlatformUtils::Initialize() a number of times, and then follow with
138         XMLPlatformUtils::Terminate() the same number of times, only the first XMLPlatformUtils::Initialize()
139         will do the initialization, and only the last XMLPlatformUtils::Terminate() will clean up
140         the memory.  The other calls are ignored.
141      </P>
142
143      <P>To ensure all the memory held by the parser are freed, the number of XMLPlatformUtils::Terminate() calls
144         should match the number of XMLPlatformUtils::Initialize() calls.
145      </P>
146
147      <P>
148         Consider the following code snippets (for illustration simplicity the following
149         sample code is not coded in try/catch clause):
150      </P>
151
152<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
153// The XMLPlatformUtils::Initialize/Terminate calls are paired.
154{
155    // Initialize the parser
156    XMLPlatformUtils::Initialize();
157
158    SAXParser* parser = new SAXParser;
159    parser-&gt;parse(xmlFile);
160    delete parser;
161
162    // Free all memory that was being held by the parser
163    XMLPlatformUtils::Terminate();
164
165    // Initialize the parser
166    XMLPlatformUtils::Initialize();
167
168    parser = new SAXParser;
169    parser-&gt;parse(xmlFile);
170    delete parser;
171
172    // Free all memory that was being held by the parser
173    XMLPlatformUtils::Terminate();
174}
175</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
176
177<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
178// calls XMLPlatformUtils::Initialize() three times
179// then calls XMLPlatformUtils::Terminate() numerous times
180{
181    // Initialize the parser
182    XMLPlatformUtils::Initialize();
183
184    // The next two calls are no-op
185    XMLPlatformUtils::Initialize();
186    XMLPlatformUtils::Initialize();
187
188    SAXParser* parser = new SAXParser;
189    parser-&gt;parse(xmlFile);
190    delete parser;
191
192    // The first two XMLPlatformUtils::Terminate() calls are no-op
193    XMLPlatformUtils::Terminate();
194    XMLPlatformUtils::Terminate();
195
196    // This third XMLPlatformUtils::Terminate() will free all memory that was being held by the parser
197    XMLPlatformUtils::Terminate();
198
199    // This extra fourth XMLPlatformUtils::Terminate() call is no-op.
200    // However calling XMLPlatformUtils::Terminate() without a matching XMLPlatformUtils::Initialize()
201    // is dangerous and should be avoided.
202    XMLPlatformUtils::Terminate();
203}
204</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
205    </FONT></TD></TR></TABLE><BR><A name="faq-5"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does my application crash or hang if XMLPlatformUtils::Initialize()/Terminate() pair is called more than once?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
206
207      <P>Please make sure you are using the Xerces-C++ 1.5.2 or up.
208      </P>
209
210      <P>Earlier version of Xerces-C++ does not allow XMLPlatformUtils::Initialize()/Terminate()
211         pair to be called more than once or has a problem.
212      </P>
213
214    </FONT></TD></TR></TABLE><BR><A name="faq-6"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does my application crash after calling XMLPlatformUtils::Terminate()?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
215
216      <P>Please make sure the XMLPlatformUtils::Terminate() is the last Xerces-C++ function to be called
217         in your program.  NO explicit nor implicit Xerces-C++ destructor (those local data that are
218         destructed when going out of scope) should be called after XMLPlatformUtils::Terminate().
219      </P>
220      <P>
221         For example consider the following code snippets which is incorrect
222         (for illustration simplicity the following sample code is not coded in try/catch clause):
223      </P>
224
225<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
2261: {
2272:    XMLPlatformUtils::Initialize();
2283:    DOMString c(&quot;hello&quot;);
2294:    XMLPlatformUtils::Terminate();
2305: }
231</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
232
233      <P>The DOMString object &quot;c&quot; is destructed when going out of scope at line 5 before the closing
234         brace.  As a result, DOMString destructor is called at line 5 after
235         XMLPlatformUtils::Terminate() which is wrong.  Correct code should be:
236      </P>
237
238<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
2391: {
2402:    XMLPlatformUtils::Initialize();
2412a:    {
2423:           DOMString c(&quot;hello&quot;);
2433a:    }
2444:    XMLPlatformUtils::Terminate();
2455: }
246</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
247
248      <P>The extra pair of braces (line 2a and 3a) ensures that all implicit destructors are called
249         before terminating Xerces-C++.</P>
250
251      <P>In addition the application also needs to guarantee that only one thread has entered either the
252        method XMLPlatformUtils::Initialize() or the method XMLPlatformUtils::Terminate() at any
253        one time.
254      </P>
255    </FONT></TD></TR></TABLE><BR><A name="faq-7"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>I'm suddenly getting segfaults with Xerces-C 2.3.0;
256        why might this be?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
257      <P>The introduction of pluggable memory management into
258        Xerces-C, one of the main features of 2.3.0, means that
259        application writers have to be more conscious about
260        destructors being invoked implicitly after a call to
261        XMLPlatformUtils::Terminate().  For example, the
262        following code is guaranteed to produce a segmentation
263        fault under Xerces-C 2.3.0, while it happened to work
264        under previous versions (in fact, this was how our
265        SAXPrint sample was formerly written;
266        try-catch blocks removed for brevity):
267      </P>
268<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
269void myParsingFunction()
270{
271    XMLPlatformUtils::Initialize();
272    SAXParser parser;
273    //parser.various method calls
274    XMLPlatformUtils::Terminate();
275} // seg fault here!
276</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
277      <P>The reason this will produce a segmentation fault is
278        that any dynamic memory the SAXParser (or any other of
279        Xerces's parsers) needs to allocate is now allocated
280        by default by a static object owned by XMLPlatformUtils.
281        When the XMLPlatformUtils::Terminate() call is made, this
282        object is destroyed--and, consequently, so are all the
283        objects that it directly created.  This includes all the
284        objects dynamically allocated by the SAXParser.  When the
285        parser object goes out of scope, its destructor is
286        invoked, and this attempts to destroy all the objects
287        that it created--which have of course just been destroyed
288        by the static MemoryManager in XMLPlatformUtils.
289      </P>
290      <P>
291        To avoid this, one must either explicitly scope the
292        parser object inside calls to
293        XMLPlatformUtils::Initialize() and
294        XMLPlatformUtils::Terminate(), or dynamically allocate
295        the parser object and destroy it explicitly before the
296        call to XMLPlatformUtils::Terminate() is made.
297      </P>
298      <P>Another way of producing segmentation faults--that again,
299      unfortunately, was employed by some of our
300      samples--is to have calls to XMLPlatformUtils::Terminate()
301      in a catch block that catches any of Xerces's exceptions.
302      Since the destructor of the exception will implicitly be
303      invoked upon exit from the catch block, and since some of
304      the exceptions' destructors call on Xerces's
305      default memory manager to destroy dynamically-allocated
306      objects, their destruction will provoke a segmentation
307      fault even if a return statement is placed in the catch
308      block since the default memory manager will no longer exist. 
309      This practice is now avoided in all our samples.
310      </P>
311    </FONT></TD></TR></TABLE><BR><A name="faq-8"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Is Xerces-C++ thread-safe?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
312
313      <P>This is not a question that has a simple yes/no answer. Here are the
314        rules for using Xerces-C++ in a multi-threaded environment:</P>
315
316      <P>Within an address space, an instance of the parser may be used without
317        restriction from a single thread, or an instance of the parser can be accessed
318        from multiple threads, provided the application guarantees that only one thread
319        has entered a method of the parser at any one time.</P>
320
321      <P>When two or more parser instances exist in a process, the instances can
322        be used concurrently, without external synchronization. That is, in an
323        application containing two parsers and two threads, one parser can be running
324        within the first thread concurrently with the second parser running within the
325        second thread.</P>
326
327      <P>The same rules apply to Xerces-C++ DOM documents. Multiple document
328        instances may be concurrently accessed from different threads, but any given
329        document instance can only be accessed by one thread at a time.</P>
330
331      <P>DOMStrings allow multiple concurrent readers. All DOMString const
332        methods are thread safe, and can be concurrently entered by multiple threads.
333        Non-const DOMString methods, such as <CODE><FONT face="courier, monospaced">appendData()</FONT></CODE>, are not thread safe and the application must guarantee that no other
334        methods (including const methods) are executed concurrently with them.</P>
335
336      <P>The application also needs to guarantee that only one thread has entered either the
337        method XMLPlatformUtils::Initialize() or the method XMLPlatformUtils::Terminate() at any
338        one time.</P>
339
340    </FONT></TD></TR></TABLE><BR><A name="faq-9"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>I am seeing memory leaks in Xerces-C++. Are they real?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
341
342      <P>The Xerces-C++ library allocates and caches some commonly reused
343        items. The storage for these may be reported as memory leaks by some heap
344        analysis tools; to avoid the problem, call the function <CODE><FONT face="courier, monospaced">XMLPlatformUtils::Terminate()</FONT></CODE> before your application exits. This will free all memory that was being
345        held by the library.</P>
346
347      <P>For most applications, the use of <CODE><FONT face="courier, monospaced">Terminate()</FONT></CODE> is optional. The system will recover all memory when the application
348        process shuts down. The exception to this is the use of Xerces-C++ from DLLs
349        that will be repeatedly loaded and unloaded from within the same process. To
350        avoid memory leaks with this kind of use, <CODE><FONT face="courier, monospaced">Terminate()</FONT></CODE> must be called before unloading the Xerces-C++ library</P>
351
352      <P>To ensure all the memory held by the parser are freed, the number of XMLPlatformUtils::Terminate() calls
353         should match the number of XMLPlatformUtils::Initialize() calls.
354      </P>
355
356      <P>If you are using XML4C where ICU is used, you may call ICU function u_cleanup() to clean up
357         ICU static data.  Please see <A href="http://oss.software.ibm.com/icu/">ICU documentation</A>
358         for details.
359      </P>
360    </FONT></TD></TR></TABLE><BR><A name="faq-10"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>I find memory leaks in Xerces-C++. How do I eliminate it?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
361
362      <P>The &quot;leaks&quot; that are reported through a leak-detector or heap-analysis
363        tools aren't really leaks in most application, in that the memory usage does
364        not grow over time as the XML parser is used and re-used.</P>
365
366      <P>What you are seeing as leaks are actually lazily evaluated data
367        allocated into static variables. This data gets released when the application
368        ends. You can make a call to <CODE><FONT face="courier, monospaced">XMLPlatformUtil::terminate()</FONT></CODE> to release all the lazily allocated variables before you exit your
369        program.</P>
370
371      <P>To ensure all the memory held by the parser are freed, the number of XMLPlatformUtils::Terminate() calls
372         should match the number of XMLPlatformUtils::Initialize() calls.
373      </P>
374
375      <P>If you are using XML4C where ICU is used, you may call ICU function u_cleanup() to clean up
376         ICU static data.  Please see <A href="http://oss.software.ibm.com/icu/">ICU documentation</A>
377         for details.
378      </P>
379    </FONT></TD></TR></TABLE><BR><A name="faq-11"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Is there a function that I have totally missed that creates
380      an XML file from a DTD, (obviously with the values missing, a skeleton, as it
381      were)?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
382
383      <P>No.  This is not supported.</P>
384
385    </FONT></TD></TR></TABLE><BR><A name="faq-12"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Can I use Xerces-C++ to perform &quot;write validation&quot; (which is having an
386      appropriate Grammar and being able to add elements to the DOM whilst validating
387      against the grammar)?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
388
389      <P>No.  This is not supported.</P>
390
391      <P>The best you can do for now is to create the DOM document, write it back
392        as XML and re-parse it.</P>
393
394    </FONT></TD></TR></TABLE><BR><A name="faq-13"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Is there a facility in Xerces-C++ to validate the data contained in a
395      DOM tree? That is, without saving and re-parsing the source document?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
396
397      <P>No. The best option for now is to generate XML source from the DOM and feed that back
398        into the parser.</P>
399
400    </FONT></TD></TR></TABLE><BR><A name="faq-14"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>How to write out a DOM tree into a string or an XML file?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
401      <P>Please make sure you are using Xerces-C++ 2.6.0 or up.</P>
402
403      <P>You can use
404         the DOMWriter::writeToString, or DOMWriter::writeNode to serialize a DOM tree.
405         Please refer to the sample DOMPrint or the API documentation for more details of
406         DOMWriter.</P>
407    </FONT></TD></TR></TABLE><BR><A name="faq-15"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does DOMNode::cloneNode() not clone the pointer assigned to a DOMNode via DOMNode::setUserData()?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
408      <P>Xerces-C++ supports the DOMNode::userData specified
409      in <A href="http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4">
410      the DOM level 3 Node interface</A>.  As
411      is made clear in the description of the behaviour of
412      <CODE><FONT face="courier, monospaced">cloneNode()</FONT></CODE>, userData that has been set on the
413      Node is not cloned.  Thus, if the userData is to be copied
414      to the new Node, this copy must be effected manually.
415      Note further that the operation of <CODE><FONT face="courier, monospaced">importNode()</FONT></CODE>
416      is specified similarly.
417      </P>
418    </FONT></TD></TR></TABLE><BR><A name="faq-16"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>How are entity reference nodes handled in DOM?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
419
420      <P>If you are using the native DOM classes, the function <CODE><FONT face="courier, monospaced">setCreateEntityReferenceNodes</FONT></CODE>
421        controls how entities appear in the DOM tree. When
422        setCreateEntityReferenceNodes is set to true (the default), an occurrence of an
423        entity reference in the XML document will be represented by a subtree with an
424        EntityReference node at the root whose children represent the entity expansion.
425        Entity expansion will be a DOM tree representing the structure of the entity
426        expansion, not a text node containing the entity expansion as text.</P>
427
428      <P>If setCreateEntityReferenceNodes is false, an entity reference in the XML
429        document is represented by only the nodes that represent the entity expansion.
430        The DOM tree will not contain any entityReference nodes.</P>
431
432    </FONT></TD></TR></TABLE><BR><A name="faq-17"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>What kinds of URLs are currently supported in Xerces-C++?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
433
434      <P>The <CODE><FONT face="courier, monospaced">XMLURL</FONT></CODE> class provides for limited URL support. It understands the <CODE><FONT face="courier, monospaced">file://, http://</FONT></CODE>, and <CODE><FONT face="courier, monospaced">ftp://</FONT></CODE> URL types, and is capable or parsing them into their constituent
435        components, and normalizing them. It also supports the commonly required action
436        of conglomerating a base and relative URL into a single URL. In other words, it
437        performs the limited set of functions required by an XML parser.</P>
438
439      <P>Another thing that URLs commonly do are to create an input stream that
440        provides access to the entity referenced. The parser, as shipped, only supports
441        this functionality on URLs in the form <CODE><FONT face="courier, monospaced">file:///</FONT></CODE> and <CODE><FONT face="courier, monospaced">file://localhost/</FONT></CODE>, i.e. only when the URL refers to a local file.</P>
442
443      <P>You may enable support for HTTP and FTP URLs by implementing and
444        installing a NetAccessor object. When a NetAccessor object is installed, the
445        URL class will use it to create input streams for the remote entities referred
446        to by such URLs.</P>
447
448    </FONT></TD></TR></TABLE><BR><A name="faq-18"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>How can I add support for URLs with HTTP/FTP protocols?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
449
450      <P>Support for the http: protocol is now included by default on all
451        platforms.</P>
452
453      <P>To address the need to make remote connections to resources specified
454        using additional protocols, ftp for example, Xerces-C++ provides the <CODE><FONT face="courier, monospaced">NetAccessor</FONT></CODE> interface. The header file is <CODE><FONT face="courier, monospaced">src/xercesc/util/XMLNetAccessor.hpp</FONT></CODE>. This interface allows you to plug in your own implementation of URL
455        networking code into the Xerces-C++ parser.</P>
456
457    </FONT></TD></TR></TABLE><BR><A name="faq-19"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Can I use Xerces-C++ to parse HTML?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
458
459      <P>Yes, but only if the HTML follows the rules given in the
460        <A href="http://www.w3.org/TR/REC-xml">XML specification</A>. Most HTML,
461        however, does not follow the XML rules, and will generate XML well-formedness
462        errors.</P>
463
464    </FONT></TD></TR></TABLE><BR><A name="faq-20"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>I keep getting an error: &quot;invalid UTF-8 character&quot;. What's wrong?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
465
466      <P>Most commonly, the XML <CODE><FONT face="courier, monospaced">encoding =</FONT></CODE> declaration is either incorrect or missing. Without a declaration, XML
467        defaults to the use utf-8 character encoding, which is not compatible with the
468        default text file encoding on most systems.</P>
469
470      <P>The XML declaration should look something like this:</P>
471
472      <P><CODE><FONT face="courier, monospaced">&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;</FONT></CODE></P>
473
474      <P>Make sure to specify the encoding that is actually used by file. The
475        encoding for &quot;plain&quot; text files depends both on the operating system and the
476        locale (country and language) in use.</P>
477
478      <P>Another common source of problems is that some characters are not
479        allowed in XML documents, according to the XML spec. Typical disallowed
480        characters are control characters, even if you escape them using the Character
481        Reference form. See the <A href="http://www.w3.org/TR/REC-xml#charsets">XML
482        spec</A>, sections 2.2 and 4.1 for details. If the parser is generating an <CODE><FONT face="courier, monospaced">Invalid character (Unicode: 0x???)</FONT></CODE> error, it is very likely that there's a character in there that you
483        can't see. You can generally use a UNIX command like &quot;od -hc&quot; to find it.</P>
484
485    </FONT></TD></TR></TABLE><BR><A name="faq-21"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>What encodings are supported by Xerces-C / XML4C?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
486
487      <P>Xerces-C has intrinsic support for ASCII, UTF-8, UTF-16 (Big/Small
488        Endian), UCS4 (Big/Small Endian), EBCDIC code pages IBM037, IBM1047 and IBM1140
489        encodings, ISO-8859-1 (aka Latin1) and Windows-1252. This means that it can
490        parse input XML files in these above mentioned encodings.</P>
491
492      <P>XML4C -- the version of Xerces-C available from IBM -- combines Xerces-C
493         and <A href="http://oss.software.ibm.com/icu/">
494         International Components for Unicode (ICU)</A> and
495         extends the encoding support to over 100 different encodings that are allowed
496         by ICU.  In particular, all the encodings registered with the
497         <A href="http://www.iana.org/assignments/character-sets">
498         Internet Assigned Numbers Authority (IANA) </A> are supported in XML4C.</P>
499
500      <P>Some implementations or ports of Xerces-C provide support for
501        additional encodings. The exact set will depend on the supplier of the parser
502        and on the character set transcoding services in use.</P>
503
504    </FONT></TD></TR></TABLE><BR><A name="faq-22"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>What character encoding should I use when creating XML documents?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
505
506      <P>The best choice in most cases is either utf-8 or utf-16. Advantages of
507        these encodings include:</P>
508
509      <UL>
510        <LI>The best portability. These encodings are more widely supported by
511          XML processors than any others, meaning that your documents will have the best
512          possible chance of being read correctly, no matter where they end up.</LI>
513        <LI>Full international character support. Both utf-8 and utf-16 cover the
514          full Unicode character set, which includes all of the characters from all major
515          national, international and industry character sets.</LI>
516        <LI>Efficient. utf-8 has the smaller storage requirements for documents
517          that are primarily composed of characters from the Latin alphabet. utf-16 is
518          more efficient for encoding Asian languages. But both encodings cover all
519          languages without loss.</LI>
520      </UL>
521
522      <P>The only drawback of utf-8 or utf-16 is that they are not the native
523        text file format for most systems, meaning that common text file editors and
524        viewers can not be directly used.</P>
525
526      <P>A second choice of encoding would be any of the others listed in the
527        table above. This works best when the xml encoding is the same as the default
528        system encoding on the machine where the XML document is being prepared,
529        because the document will then display correctly as a plain text file. For UNIX
530        systems in countries speaking Western European languages, the encoding will
531        usually be iso-8859-1.</P>
532
533      <P>The versions of Xerces distributed by IBM, both C and Java (known
534        respectively as XML4C and XML4J), include all of the encodings listed in the
535        above table, on all platforms.</P>
536
537      <P>A word of caution for Windows users: The default character set on
538        Windows systems is windows-1252, not iso-8859-1. While Xerces-C++ does
539        recognize this Windows encoding, it is a poor choice for portable XML data
540        because it is not widely recognized by other XML processing tools. If you are
541        using a Windows-based editing tool to generate XML, check which character set
542        it generates, and make sure that the resulting XML specifies the correct name
543        in the <CODE><FONT face="courier, monospaced">encoding=&quot;...&quot;</FONT></CODE> declaration.</P>
544
545    </FONT></TD></TR></TABLE><BR><A name="faq-23"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Is EBCDIC supported?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
546
547      <P>Yes, Xerces-C++ supports EBCDIC with the ibm1140, ibm037 and ibm1047 encodings.
548        When creating EBCDIC encoded XML data, the preferred encoding is ibm1140. The ibm037 encoding,
549        and its alternate name, ebcdic-cp-us, is almost the same as ibm1140, but
550        it lacks the Euro symbol.</P>
551
552      <P>These three encodings, ibm1140, ibm037 and ibm1047, are available on both
553        Xerces-C and IBM XML4C, on all platforms.</P>
554
555      <P>On IBM System 390, XML4C also supports three alternative forms,
556        ibm037-s390, ibm1140-s390, and ibm1047-s390. These are similar to the base ibm037, ibm1140, and ibm1047
557        encodings, but with alternate mappings of the EBCDIC new-line character, which
558        allows them to appear as normal text files on System 390. These encodings are
559        not supported on other platforms, and should not be used for portable data.</P>
560
561      <P>XML4C on System 390 and AS/400 also provides additional EBCDIC
562        encodings, including those for the character sets of different countries. The
563        exact set supported will be platform dependent, and these encodings are not
564        recommended for portable XML data.</P>
565
566    </FONT></TD></TR></TABLE><BR><A name="faq-24"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does deleting a transcoded string result in assertion on windows?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
567      <P>Both your application program and the Xerces-C++ DLL must use the same *DLL* version of the
568         runtime library.  If either statically links to the runtime library, the
569                 problem will still occur.</P>
570
571      <P>For example, for a Win32/VC6 build, the runtime library build setting MUST
572                 be &quot;Multithreaded DLL&quot; for release builds and &quot;Debug Multithreaded DLL&quot; for
573                 debug builds.</P>
574
575      <P>Or for example for a Win32/BCB6 build, application need to switch to Multithreaded
576         runtime to avoid such memory access violation.</P>
577
578      <P>To bypass such problem, instead of calling operator delete[] directly, you can use the
579         provided function XMLString::release to delete any string that was allocated by the parser.
580         This will ensure the string is allocated and deleted by the same DLL and such assertion
581         problem should be resolved.</P>
582    </FONT></TD></TR></TABLE><BR><A name="faq-25"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>How do I transcode to/from something besides the local code page?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
583      <P>XMLString::transcode() will transcode from XMLCh to the local code page, and
584         other APIs which take a char* assume that the source text is in the local
585         code page. If this is not true, you must transcode the text yourself. You
586         can do this using local transcoding support on your OS, such as Iconv on
587         Unix or IBM's ICU package. However, if your transcoding needs are simple,
588         you can achieve some better portability by using the Xerces-C++ parser's
589         transcoder wrappers. You get a transcoder like this:
590       </P>
591       <UL>
592         <LI>
593            Call XMLPlatformUtils::fgTransServer-&gt;MakeNewTranscoderFor() and provide
594            the name of the encoding you wish to create a transcoder for. This will
595            return a transcoder to you, which you own and must delete when you are
596            through with it.
597
598           NOTE: You must provide a maximum block size that you will pass to the transcoder
599           at one time, and you must pass blocks of characters of this count or smaller when
600           you do your transcoding. The reason for this is that this is really an
601           internal API and is used by the parser itself to do transcoding. The parser
602           always does transcoding in known block sizes, and this allows transcoders to
603           be much more efficient for internal use since it knows the max size it will
604           ever have to deal with and can set itself up for that internally. In
605           general, you should stick to block sizes in the 4 to 64K range.
606         </LI>
607         <LI>
608            The returned transcoder is something derived from XMLTranscoder, so they
609            are all returned to you via that interface.
610         </LI>
611         <LI>
612            This object is really just a wrapper around the underlying transcoding
613            system actually in use by your version of Xerces, and does whatever is
614            necessary to handle differences between the XMLCh representation and the
615            representation used by that underlying transcoding system.
616         </LI>
617         <LI>
618            The transcoder object has two primary APIs, transcodeFrom() and
619            transcodeTo(). These transcode between the XMLCh format and the encoding you
620            indicated.
621         </LI>
622         <LI>
623            These APIs will transcode as much of the source data as will fit into the
624            outgoing buffer you provide. They will tell you how much of the source they
625            ate and how much of the target they filled. You can use this information to
626            continue the process until all source is consumed.
627         </LI>
628         <LI>
629            char* data is always dealt with in terms of bytes, and XMLCh data is
630            always dealt with in terms of characters. Don't mix up which you are dealing
631            with or you will not get the correct results, since many encodings don't
632            have a one to one relationship of characters to bytes.
633         </LI>
634         <LI>
635            When transcoding from XMLCh to the target encoding, the transcodeTo()
636            method provides an 'unrepresentable flag' parameter, which tells the
637            transcoder how to deal with an XMLCh code point that cannot be converted
638            legally to the target encoding, which can easily happen since XMLCh is
639            Unicode and can represent thousands of code points. The options are to use a
640            default replacement character (which the underlying transcoding service will
641            choose, and which is guaranteed to be legal for the target encoding), or to
642            throw an exception.
643         </LI>
644       </UL>
645         <P>Here is an example:</P>
646<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
647// create an XMLTranscoder that is able to transcode between Unicode and Big5
648// ASSUMPTION: assumes your underlying transcoding utility supports this encoding Big5
649XMLTranscoder* t =
650    XMLPlatformUtils::fgTransService-&gt;makeNewTranscoderFor(&quot;Big5&quot;, failReason, 16*1024, MemoryManager);
651
652// source string is in Unicode, wanna to transcode to Big5
653t-&gt;transcodeTo(source_unicode, length, result_Big5, length, charsEaten, XMLTranscoder::UnRep_Throw );
654
655// source string in Big5, wanna to transcode to Unicode
656t-&gt;transcodeFrom(source_Big5, length, result_unicode, length, bytesEaten, (unsigned char*)charSz);
657</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
658
659    </FONT></TD></TR></TABLE><BR><A name="faq-26"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does setProperty not work?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
660
661      <P>The function <CODE><FONT face="courier, monospaced">SAX2XMLReader::setProperty(const XMLCh* const name, void* value)</FONT></CODE>
662         and <CODE><FONT face="courier, monospaced">DOMBuilder::setProperty(const XMLCh* const name, void* value)</FONT></CODE>
663         takes a void pointer for the property value.  Application is required to initialize this void pointer
664         to a correct type.  See <A href="program-sax2.html#SAX2Properties">SAX2 Programming Guide</A>
665         and <A href="program-dom.html#DOMBuilderProperties">DOM Programming Guide</A>
666         to learn exactly what type of property value that each property expects for processing.
667         Passing a void pointer that was initialized with a wrong type will lead to unexpected result.
668      </P>
669
670    </FONT></TD></TR></TABLE><BR><A name="faq-27"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does getProperty not work?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
671
672      <P>The function <CODE><FONT face="courier, monospaced">void* SAX2XMLReader::getProperty(const XMLCh* const name)</FONT></CODE>
673         and <CODE><FONT face="courier, monospaced">void* DOMBuilder::getProperty(const XMLCh* const name)</FONT></CODE>
674         returns a void pointer for the property value.  See
675         <A href="program-sax2.html#SAX2Properties">SAX2 Programming Guide</A> and
676         exactly what type of object each property returns.
677      </P>
678      <P>The parser owns the returned pointer.  The memory allocated for
679         the returned pointer will be destroyed when the parser is deleted.
680         To ensure accessibility of the returned information after the parser
681         is deleted, callers need to copy and store the returned information
682         somewhere else; otherwise you may get unexpected result.  Since the returned
683         pointer is a generic void pointer, see
684         <A href="program-sax2.html#SAX2Properties">SAX2 Programming Guide</A> and
685         <A href="program-dom.html#DOMBuilderProperties">DOM Programming Guide</A> to learn
686         exactly what type of property value each property returns for replication.
687      </P>
688
689    </FONT></TD></TR></TABLE><BR><A name="faq-28"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does the parser still try to locate the DTD even validation is turned off
690       and how to ignore external DTD reference?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
691
692      <P>When DTD is referenced, the parser will try to read it, because DTDs can
693         provide a lot more information than just validation. It defines entities and
694         notations, external unparsed entities, default attributes, character
695         entities, etc... So it will always try to read it if present, even if
696         validation is turned off.
697      </P>
698
699      <P>To ignore the DTD, with Xerces-C++ 2.6.0 or up, you can call
700         <CODE><FONT face="courier, monospaced">setLoadExternalDTD(false)</FONT></CODE> (or
701         <CODE><FONT face="courier, monospaced">setFeature(XMLUni::fgXercesLoadExternalDTD, false)</FONT></CODE>
702         to disable the loading of external DTD.   The parser will then ignore
703         any external DTD completely if the validationScheme is set to Val_Never.
704      </P>
705
706      <P>Note: This flag is ignored if the validationScheme is set to Val_Always or Val_Auto.
707      </P>
708
709      <P>To ignore the DTD in earlier version of Xerces-C++, the
710         only way to get around this is to install an EntityResolver
711         (see the Redirect sample for an example of how this is done), and reset the
712         DTD file to &quot;&quot;.
713      </P>
714
715    </FONT></TD></TR></TABLE><BR><A name="faq-29"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why do I get segmentation fault when running on Redhat Linux?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
716
717      <P>There were some problems with Redhat Linux 7.x with C++ exception handling across shared
718         libraries.  More details can be found
719         <A href="http://rhn.redhat.com/errata/RHBA-2002-055.html">here</A>.
720         Please try to upgrade your Redhat Linux gcc to the latest patch level and see if it helps.
721      </P>
722
723    </FONT></TD></TR></TABLE><BR><A name="faq-30"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does the XML data generated by the DOMWriter does not match my original XML input?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
724
725      <P>If you parse an xml document using XercesDOMParser or DOMBuilder and pass such DOMNode
726         to DOMWriter for serialization, you may not get something that is exactly the same
727         as the original XML data.   The parser may have done normalization, end of line conversion,
728         or has expanded the entity reference as per the XML 1.0 spec, 4.4 XML Processor Treatment of
729         Entities and References.   From DOMWriter perspective, it does not know what the original
730         string was, all it sees is a processed DOMNode generated by the parser.
731         But since the DOMWriter is supposed to generate something that is parsable if sent
732         back to the parser, it will not print the DOMNode node value as is.    The DOMWriter
733         may do some &quot;touch up&quot; to the output data for it to be parsable.</P>
734
735      <P>See <A href="program-dom.html#DOMWriterEntityRef">How does DOMWriter handle built-in entity
736         Reference in node value?</A> to understand further how DOMWriter touches up the entity reference.
737      </P>
738    </FONT></TD></TR></TABLE><BR><A name="faq-31"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why does my application crash when deleting the parser after releasing a document?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
739
740      <P>In most cases, the parser handles deleting documents when the parser gets deleted.  However, if an application
741         needs to release a document, it shall adopt the document before releasing it, so that the parser
742         knows that the ownership of this particular document is transfered to the application and will not
743         try to delete it once the parser gets deleted.
744      </P>
745
746<DIV align="left"><TABLE border="0" cellpadding="0" cellspacing="4" width="464"><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#ffffff" width="462"><FONT size="-1"><PRE>
747XercesDOMParser *parser = new XercesDOMParser;
748...
749try
750{
751    parser-&gt;parse(gXmlFile);
752}
753catch ()
754{
755...
756}
757DOMNode *doc = parser-&gt;getDocument();
758...
759parser-&gt;adoptDocument();
760doc-&gt;release(); 
761...
762delete parser;
763</PRE></FONT></TD><TD bgcolor="#0086b2" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" height="1" width="462"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="462"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></DIV>
764
765      <P>The alternative to release document is to call parser's resetDocumentPool(), which releases
766         all the documents parsed.
767      </P>
768     
769    </FONT></TD></TR></TABLE><BR><A name="faq-32"><!--anchor--></A><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="ffffff" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Why do we have two versions of some XMLString methods (one with memory manager and one without)?</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10">&nbsp;</TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif">
770
771      <P>With the introduction of the configurable memory manager, we didn't want to break users by
772         changing the signature of the existing methods (for example, transcode and replicate). Also,
773         we did not want to provide a default memory
774         manager as it would introduce a side effect with users experiencing some strange core dumps.
775         The latter will occur when the scope of the string allocated is beyond that of
776         XMLPlatformUtils::Terminate (i.e. a string is allocated using the default memory manager
777         which is deleted when XMLPlatformUtils::Terminate is called, but the allocated string is
778         deleted later). We plan to deprecate the methods without a memory manager in a later release.
779      </P>
780
781    </FONT></TD></TR></TABLE><BR></TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD bgcolor="#0086b2"><IMG height="1" src="images/dot.gif" width="1"></TD></TR><TR><TD align="center"><FONT color="#0086b2" size="-1"><I>
782              Copyright &copy; 1999-2004 The Apache Software Foundation.
783              All Rights Reserved.
784            </I></FONT></TD></TR></TABLE></BODY></HTML>
Note: See TracBrowser for help on using the repository browser.