Dear all,
I have a problem that has been annoying me for the last few days.
I am building a test framework. Our test cases are created in an xml
file which depicts the test case, since some settings are common to all
the test cases we have a dtd file with these settings. My problem is
that the xml and dtd files are correctly parsed in Ubuntu 7.04 but
aren't in MS Windows.
XML file:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE execution [
<!-- settings -->
<!ENTITY % settings SYSTEM "settings.dtd">
%settings;
]>
<execution>
<outputfiles deleteprevious="true"></outputfiles>
<testmanager>
<outputter class="CAggregOutputter" create="true" level="20"
name="agregoutputter" >
<outputter class="CConsoleOutputter" create="true"
level="20" name="consoleoutputter" />
<outputter class="CBufferedFileOutputter" create="true"
level="20" name="bufferedfileoutputter" />
</outputter>
<!--&defaultuserinteraction;-->
<userinteraction waittoend="true" rank="0" attachdebugger="false" />
<exception handlesystem="true" />
<resultmanager class="CMsgCreatorResultManager" create="true"
name="resultmanager">
<xmlfile>./result-test-msg-id.xml</xmlfile>
</resultmanager>
<thread name="default" create="true">
<scheduler class="CSchedulerStepInterleaving" create="true"
name="scheduler" />
<syncgroup class="CMsgCreatorSyncGroup" create="true"
name="test_msg_id">
<resourcepool class="CRCP_Integer" create="true"
name="msg-id">
<range begin="0" end="6" step="1" />
</resourcepool>
<resourcepool class="CRCP_Integer" create="true"
name="msg-destination">
<range begin="0" end="128" step="32" />
</resourcepool>
<resourcepool class="CRCP_String" create="true"
name="name_of_tester">
<resource class="CRSC_String" create="true"
name="user login"></resource>
</resourcepool>
<resourcepool class="CRCP_String" create="true"
name="name_of_tag">
<resource class="CRSC_String" create="true"
name="cvs tag"></resource>
</resourcepool>
<test class="CTestMsgID" create="true" name="TestMsgID">
<skipto iteration="0"/>
</test>
</syncgroup>
</thread>
<run times="1" />
</testmanager>
</execution>
DTD file:
<!ENTITY outputLvl "20">
<!ENTITY name_of_tester "user login">
<!ENTITY name_of_tag "cvs tag">
<!ENTITY defaultuserinteraction '<userinteraction waittoend="true"
rank="0" attachdebugger="false" />'>
<!ENTITY defaultexception '<exception handlesystem="true" />'>
the parsing is done using the following code
The code where it the problem occurs is this section.
CODE:
XMLPlatformUtils::Initialize();
m_pcXMLParser = new XercesDOMParser ();
m_strURL = str_url;
m_pcXMLParser->setCreateEntityReferenceNodes(false);
// If we have an URL create an input source:
if (!m_strURL.empty ()) {
m_pcInputSource = new URLInputSource (XMLURL (m_strURL.c_str ()));
m_pcXMLParser->parse (*m_pcInputSource);
if (m_pcXMLParser->getDocument () == NULL)
throw TESTEXCEPTION("Found empty xml document. Possibly
tried to open wrong document(see the next files: setings.dtd,..).");
if (m_pcXMLParser->getDocument ()->getDocumentElement () == NULL)
throw TESTEXCEPTION("Found empty xml document. Possibly
tried to open wrong document(see the next files: setings.dtd,..).");
} else
m_pcInputSource = NULL;
In Windows it always returns null in the "m_pcXMLParser->getDocument
()->getDocumentElement ()" line. I have noticed that if I remove the
"%settings" line in the XML file it does not return null but it also
doesn't import the settings, so no use for this solution.
I have been searching google and the user mailing list for something
similar but couldn't find anything. One more thing I'm using the static
version of Xerces-C 2.7 library.
Hope you can help me, any more info you need please ask.
Thanks in advance.
Kind Regards
--
José Rui Simões
Junior Engineer
Critical Software, SA
Parque Industrial de Taveiro, Lote 48
3045-504 Coimbra, Portugal
Tel:+351.239 989 100 Fax:+351.239 989 119
http://www.criticalsoftware.com <http://www.criticalsoftware.com/>
[EMAIL PROTECTED]
<mailto:jose-r-simoes%40criticalsoftware.com>