# ACEXML Programming Guidelines

- A lot of class names under `/web/users/isisbuilds/tmp/ACE_wrappers/ACEXML/common` do not follow the naming convention suggested in ACE-guidelines.html. The reason for that is because those classes were derived from the SAX2 API and we would like to keep them as similar as possible.
- Character encoding: The default character encoding for ACEXML can be set at compile time. ACEXML uses UTF-8 encoding in most platforms where `ACEXML_Char` maps to `char` in this case. When ACE is configured to use `wchar` and `UNICODE`, ACEXML uses UTF-16 encoding and `ACEXML_Char` maps to `wchar_t`. Notice that ACEXML assume `sizeof (wchar_t)` is of 2-byte long. For platforms using 4-byte `wchar_t`, ACEXML will not work correctly, but it should be trivial to fix.

- Currently, there's only an example showing how to use the parser under `/web/users/isisbuilds/tmp/ACE_wrappers/ACEXML/examples/SAXPrint/`.

- (Not supported yet) To develop a new validator, one must create a DLL implementing `ACEXML_Attributes_Def_Builder`, `ACEXML_Attribute_Def_Builder`, `ACEXML_Element_Def_Builder`, `ACEXML_Validator`, and `ACEXML_DTD_Manager`. The DLL should also export a traditional C function called `create_dtd_manager`. The XML parser itself should also be modified to support and dynamically link with the new validator. See `/web/users/isisbuilds/tmp/ACE_wrappers/ACEXML/parser/debug_validator/` for an example.