G'day all,

Recently downloaded xerces 1.1.0 library to play with and to find the way 
to embed it into existing project. Great lib really, thank's to all who put
their 
efforts in development. 
I have been trying to regenerate DTD from parser using validator that is a
part 
of the library. This is necessarily for me to get control on DTD header
creation 
process. Little problem I faced with is the SAX parser does not process
correct 
some element's content declarations. Have a look at the following XML DTD
code:


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE FORM
[ 
        <!ELEMENT FORM (ORIGIN, FIELD_LIST)> 
        <!ATTLIST FORM TYPE CDATA #REQUIRED> 
        <!ATTLIST FORM CONTENT CDATA #REQUIRED> 
        <!ELEMENT ORIGIN (#PCDATA)> 
        <!ELEMENT FIELD_LIST (FIELD*)> 
        <!ELEMENT FIELD (VALUE?, EDIT_STATE?)> 
        <!ATTLIST FIELD ID CDATA #REQUIRED> 
        <!ELEMENT VALUE (#PCDATA)> 
        <!ELEMENT EDIT_STATE (#PCDATA)> 
]>

<FORM TYPE="QN1-9.1999" CONTENT="data">
  <ORIGIN>Office</ORIGIN>
  <FIELD_LIST>
    <FIELD ID="A1">
      <VALUE>123456</VALUE>
      <EDIT_STATE>readonly</EDIT_STATE>
    </FIELD>
  </FIELD_LIST>
</FORM>


This code is complient with current XML standard, isn't it? After I fed it
to SAX parser
and regenerated it from validator I've got the following:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE FORM [
        <!ELEMENT FORM (ORIGIN,FIELD_LIST)>
        <!ATTLIST FORM CONTENT CDATA #REQUIERED>
        <!ATTLIST FORM TYPE CDATA #REQUIERED>
        <!ELEMENT ORIGIN (#PCDATA)*>
        <!ELEMENT FIELD_LIST (FIELD)*>
        <!ELEMENT FIELD (VALUE?,EDIT_STATE?)>
        <!ATTLIST FIELD ID CDATA #REQUIERED>
        <!ELEMENT VALUE (#PCDATA)*>
        <!ELEMENT EDIT_STATE (#PCDATA)*>
]>

<FORM TYPE="QN1-9.1999" CONTENT="data">
  <ORIGIN>Office</ORIGIN>
  <FIELD_LIST>
    <FIELD ID="A1">
      <VALUE>123456</VALUE>
      <EDIT_STATE>readonly</EDIT_STATE>
    </FIELD>
  </FIELD_LIST>
</FORM>

You can see the difference in #PCDATA and FILED* declarations before and 
after. DTD validator that is coming with library does not process asterisk
as part of name in content declaration (that's correct form lexical point of
view) 
and all the time uses mixed model because of #PCDATA. But I can't recreate 
DTD in original state. Can I generate content declaration for element that
may 
appear only once with no changes in parser code? Can you give me a tip 
how to path this problem?

I'm using the following environment:

        Version number of Xerces-C:     1.1.0
        OS platform/version:            NT4+SP5
        Compiler/version:               MSVC5
        Sample XML file that causes the bug: not required
        Sample Schema file:             not required
        Sample DTD file:                see above


Kind regards,
---------------------------------------------------------------
Serge V. Krepak 
Software Engineer ...currently for

Quicken Australia
Unit 4, 7-26 Bridge Road
Stanmore NSW 2048
PH: +61 2 9519 3216
FX: +61 2 9519 3459
It's Quicken.Easy at <http://www.quicken.com.au>
---------------------------------------------------------------
This e-mail is for its intended recipient only. If this e-mail has been sent
to you in error, or contains privileged or confidential information, or the
contact details of other persons, then you must not copy or distribute this
information and you must delete the e-mail message and notify the sender.
Liability is expressly excluded in the event of viruses accompanying this
e-mail or any attachment.


Reply via email to