26 typedef struct dtd *Dtd;
28 typedef struct entity *Entity;
33 AttributeDefinition 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;
56 enum entity_type {ET_external, ET_internal};
57 typedef enum entity_type EntityType;
59 enum markup_language {ML_xml, ML_nsl, ML_unspecified};
60 typedef enum markup_language MarkupLanguage;
62 enum standalone_declaration {
64 SDD_unspecified, SDD_no, SDD_yes, SDD_enum_count
66 typedef enum standalone_declaration StandaloneDeclaration;
68 extern 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
107 typedef enum content_type ContentType;
109 extern 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
133 typedef enum default_type DefaultType;
135 extern XML_API
const char8 *DefaultTypeName[DT_enum_count];
137 enum attribute_type {
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
143 typedef enum attribute_type AttributeType;
145 extern 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;
183 XML_API Dtd NewDtd(
void);
184 XML_API
void FreeDtd(Dtd
dtd);
186 XML_API Entity NewExternalEntityN(
const Char *name,
int namelen,
187 const char8 *publicid,
const char8 *systemid,
188 NotationDefinition notation,
190 XML_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);
194 XML_API
void FreeEntity(Entity e);
196 XML_API
const char8 *EntityURL(Entity e);
197 XML_API
const char8 *EntityDescription(Entity e);
198 XML_API
void EntitySetBaseURL(Entity e,
const char8 *url);
199 XML_API
const char8 *EntityBaseURL(Entity e);
201 XML_API Entity DefineEntity(Dtd
dtd, Entity
entity,
int pe);
202 XML_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)
210 XML_API ElementDefinition DefineElementN(Dtd
dtd,
const Char *name,
int namelen,
211 ContentType type, Char *content);
212 XML_API ElementDefinition TentativelyDefineElementN(Dtd
dtd,
213 const Char *name,
int namelen);
214 XML_API ElementDefinition RedefineElement(ElementDefinition e, ContentType type,
216 XML_API ElementDefinition FindElementN(Dtd
dtd,
const Char *name,
int namelen);
217 XML_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))
225 XML_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);
230 XML_API AttributeDefinition FindAttributeN(ElementDefinition element,
231 const Char *name,
int namelen);
232 XML_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))
239 XML_API NotationDefinition DefineNotationN(Dtd
dtd,
const Char *name,
int namelen,
240 const char8 *publicid,
const char8 *systemid);
241 XML_API NotationDefinition TentativelyDefineNotationN(Dtd
dtd,
242 const Char *name,
int namelen);
243 XML_API NotationDefinition RedefineNotation(NotationDefinition n,
244 const char8 *publicid,
const char8 *systemid);
245 XML_API NotationDefinition FindNotationN(Dtd
dtd,
const Char *name,
int namelen);
246 XML_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))