26typedef struct dtd *Dtd;
28typedef struct entity *Entity;
33AttributeDefinition NextAttributeDefinition(ElementDefinition element,
34 AttributeDefinition previous);
42 Entity internal_part, external_part;
44 Entity parameter_entities;
45 Entity predefined_entities;
47 NSL_Doctype_I *doctype;
49 ElementDefinition elements;
51 NotationDefinition notations;
56enum entity_type {ET_external, ET_internal};
57typedef enum entity_type EntityType;
59enum markup_language {ML_xml, ML_nsl, ML_unspecified};
60typedef enum markup_language MarkupLanguage;
62enum standalone_declaration {
64 SDD_unspecified, SDD_no, SDD_yes, SDD_enum_count
66typedef enum standalone_declaration StandaloneDeclaration;
68extern const char8 *StandaloneDeclarationName[SDD_enum_count];
76 const char8 *base_url;
78 CharacterEncoding encoding;
86 int line1_char_offset;
87 int matches_parent_text;
91 const char8 *systemid;
92 const char8 *publicid;
93 NotationDefinition notation;
94 MarkupLanguage ml_decl;
95 const char8 *version_decl;
96 CharacterEncoding encoding_decl;
97 StandaloneDeclaration standalone_decl;
98 const char8 *ddb_filename;
105 CT_mixed, CT_any, CT_bogus1, CT_bogus2, CT_empty, CT_element, CT_enum_count
107typedef enum content_type ContentType;
109extern XML_API
const char8 *ContentTypeName[CT_enum_count];
116 NSL_Doctype_I *doctype;
117 NSL_ElementSummary_I *elsum;
121 AttributeDefinition attributes;
130 DT_required, DT_bogus1, DT_implied,
131 DT_bogus2, DT_none, DT_fixed, DT_enum_count
133typedef enum default_type DefaultType;
135extern XML_API
const char8 *DefaultTypeName[DT_enum_count];
139 AT_cdata, AT_bogus1, AT_bogus2, AT_nmtoken, AT_bogus3, AT_entity,
140 AT_idref, AT_bogus4, AT_bogus5, AT_nmtokens, AT_bogus6, AT_entities,
141 AT_idrefs, AT_id, AT_notation, AT_enumeration, AT_enum_count
143typedef enum attribute_type AttributeType;
145extern XML_API
const char8 *AttributeTypeName[AT_enum_count];
157 char type, default_type;
164 Char **allowed_values;
165 DefaultType default_type;
166 const Char *default_value;
176 const char8 *systemid;
177 const char8 *publicid;
183XML_API Dtd NewDtd(
void);
184XML_API
void FreeDtd(Dtd
dtd);
186XML_API Entity NewExternalEntityN(
const Char *name,
int namelen,
187 const char8 *publicid,
const char8 *systemid,
188 NotationDefinition notation,
190XML_API Entity NewInternalEntityN(
const Char *name,
int namelen,
191 const Char *text, Entity parent,
192 int line_offset,
int line1_char_offset,
193 int matches_parent_text);
194XML_API
void FreeEntity(Entity e);
196XML_API
const char8 *EntityURL(Entity e);
197XML_API
const char8 *EntityDescription(Entity e);
198XML_API
void EntitySetBaseURL(Entity e,
const char8 *url);
199XML_API
const char8 *EntityBaseURL(Entity e);
201XML_API Entity DefineEntity(Dtd
dtd, Entity
entity,
int pe);
202XML_API Entity FindEntityN(Dtd
dtd,
const Char *name,
int namelen,
int pe);
204#define NewExternalEntity(name, pub, sys, nnot, parent) \
205 NewExternalEntityN(name, name ? Strlen(name) : 0, pub, sys, nnot, parent)
206#define NewInternalEntity(name, test, parent, l, l1, mat) \
207 NewInternalEntityN(name, name ? Strlen(name) : 0, test, parent, l, l1, mat)
208#define FindEntity(dtd, name, pe) FindEntityN(dtd, name, Strlen(name), pe)
210XML_API ElementDefinition DefineElementN(Dtd
dtd,
const Char *name,
int namelen,
211 ContentType type, Char *content);
212XML_API ElementDefinition TentativelyDefineElementN(Dtd
dtd,
213 const Char *name,
int namelen);
214XML_API ElementDefinition RedefineElement(ElementDefinition e, ContentType type,
216XML_API ElementDefinition FindElementN(Dtd
dtd,
const Char *name,
int namelen);
217XML_API
void FreeElementDefinition(ElementDefinition e);
219#define DefineElement(dtd, name, type, content) \
220 DefineElementN(dtd, name, Strlen(name), type, content)
221#define TentativelyDefineElement(dtd, name) \
222 TentativelyDefineElementN(dtd, name, Strlen(name))
223#define FindElement(dtd, name) FindElementN(dtd, name, Strlen(name))
225XML_API AttributeDefinition DefineAttributeN(ElementDefinition element,
226 const Char *name,
int namelen,
227 AttributeType type, Char **allowed_values,
228 DefaultType default_type,
229 const Char *default_value);
230XML_API AttributeDefinition FindAttributeN(ElementDefinition element,
231 const Char *name,
int namelen);
232XML_API
void FreeAttributeDefinition(AttributeDefinition a);
234#define DefineAttribute(element, name, type, all, dt, dv) \
235 DefineAttributeN(element, name, Strlen(name), type, all, dt, dv)
236#define FindAttribute(element, name) \
237 FindAttributeN(element, name, Strlen(name))
239XML_API NotationDefinition DefineNotationN(Dtd
dtd,
const Char *name,
int namelen,
240 const char8 *publicid,
const char8 *systemid);
241XML_API NotationDefinition TentativelyDefineNotationN(Dtd
dtd,
242 const Char *name,
int namelen);
243XML_API NotationDefinition RedefineNotation(NotationDefinition n,
244 const char8 *publicid,
const char8 *systemid);
245XML_API NotationDefinition FindNotationN(Dtd
dtd,
const Char *name,
int namelen);
246XML_API
void FreeNotationDefinition(NotationDefinition n);
248#define DefineNotation(dtd, name, pub, sys) \
249 DefineNotationN(dtd, name, Strlen(name), pub, sys)
250#define TentativelyDefineNotation(dtd, name) \
251 TentativelyDefineNotationN(dtd, name, Strlen(name))
252#define FindNotation(dtd, name) FindNotationN(dtd, name, Strlen(name))