|
1 /* |
|
2 * Summary: interface for the XML entities handling |
|
3 * Description: this module provides some of the entity API needed |
|
4 * for the parser and applications. |
|
5 * |
|
6 * Copy: See Copyright for the status of this software. |
|
7 * |
|
8 * Author: Daniel Veillard |
|
9 */ |
|
10 |
|
11 #ifndef __XML_ENTITIES_H__ |
|
12 #define __XML_ENTITIES_H__ |
|
13 |
|
14 #include <libxml/xmlversion.h> |
|
15 #include <libxml/tree.h> |
|
16 |
|
17 #ifdef __cplusplus |
|
18 extern "C" { |
|
19 #endif |
|
20 |
|
21 /* |
|
22 * The different valid entity types. |
|
23 */ |
|
24 typedef enum { |
|
25 XML_INTERNAL_GENERAL_ENTITY = 1, |
|
26 XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2, |
|
27 XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3, |
|
28 XML_INTERNAL_PARAMETER_ENTITY = 4, |
|
29 XML_EXTERNAL_PARAMETER_ENTITY = 5, |
|
30 XML_INTERNAL_PREDEFINED_ENTITY = 6 |
|
31 } xmlEntityType; |
|
32 |
|
33 /* |
|
34 * An unit of storage for an entity, contains the string, the value |
|
35 * and the linkind data needed for the linking in the hash table. |
|
36 */ |
|
37 |
|
38 struct _xmlEntity { |
|
39 void *_private; /* application data */ |
|
40 xmlElementType type; /* XML_ENTITY_DECL, must be second ! */ |
|
41 const xmlChar *name; /* Entity name */ |
|
42 struct _xmlNode *children; /* First child link */ |
|
43 struct _xmlNode *last; /* Last child link */ |
|
44 struct _xmlDtd *parent; /* -> DTD */ |
|
45 struct _xmlNode *next; /* next sibling link */ |
|
46 struct _xmlNode *prev; /* previous sibling link */ |
|
47 struct _xmlDoc *doc; /* the containing document */ |
|
48 |
|
49 xmlChar *orig; /* content without ref substitution */ |
|
50 xmlChar *content; /* content or ndata if unparsed */ |
|
51 int length; /* the content length */ |
|
52 xmlEntityType etype; /* The entity type */ |
|
53 const xmlChar *ExternalID; /* External identifier for PUBLIC */ |
|
54 const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC Entity */ |
|
55 |
|
56 struct _xmlEntity *nexte; /* unused */ |
|
57 const xmlChar *URI; /* the full URI as computed */ |
|
58 int owner; /* does the entity own the childrens */ |
|
59 }; |
|
60 |
|
61 /* |
|
62 * All entities are stored in an hash table. |
|
63 * There is 2 separate hash tables for global and parameter entities. |
|
64 */ |
|
65 |
|
66 typedef struct _xmlHashTable xmlEntitiesTable; |
|
67 typedef xmlEntitiesTable *xmlEntitiesTablePtr; |
|
68 |
|
69 /* |
|
70 * External functions: |
|
71 */ |
|
72 |
|
73 #ifdef LIBXML_LEGACY_ENABLED |
|
74 XMLPUBFUN void XMLCALL |
|
75 xmlInitializePredefinedEntities (void); |
|
76 #endif /* LIBXML_LEGACY_ENABLED */ |
|
77 XMLPUBFUN xmlEntityPtr XMLCALL |
|
78 xmlAddDocEntity (xmlDocPtr doc, |
|
79 const xmlChar *name, |
|
80 int type, |
|
81 const xmlChar *ExternalID, |
|
82 const xmlChar *SystemID, |
|
83 const xmlChar *content); |
|
84 XMLPUBFUN xmlEntityPtr XMLCALL |
|
85 xmlAddDtdEntity (xmlDocPtr doc, |
|
86 const xmlChar *name, |
|
87 int type, |
|
88 const xmlChar *ExternalID, |
|
89 const xmlChar *SystemID, |
|
90 const xmlChar *content); |
|
91 XMLPUBFUN xmlEntityPtr XMLCALL |
|
92 xmlGetPredefinedEntity (const xmlChar *name); |
|
93 XMLPUBFUN xmlEntityPtr XMLCALL |
|
94 xmlGetDocEntity (xmlDocPtr doc, |
|
95 const xmlChar *name); |
|
96 XMLPUBFUN xmlEntityPtr XMLCALL |
|
97 xmlGetDtdEntity (xmlDocPtr doc, |
|
98 const xmlChar *name); |
|
99 XMLPUBFUN xmlEntityPtr XMLCALL |
|
100 xmlGetParameterEntity (xmlDocPtr doc, |
|
101 const xmlChar *name); |
|
102 #ifdef LIBXML_LEGACY_ENABLED |
|
103 XMLPUBFUN const xmlChar * XMLCALL |
|
104 xmlEncodeEntities (xmlDocPtr doc, |
|
105 const xmlChar *input); |
|
106 #endif /* LIBXML_LEGACY_ENABLED */ |
|
107 XMLPUBFUN xmlChar * XMLCALL |
|
108 xmlEncodeEntitiesReentrant(xmlDocPtr doc, |
|
109 const xmlChar *input); |
|
110 XMLPUBFUN xmlChar * XMLCALL |
|
111 xmlEncodeSpecialChars (xmlDocPtr doc, |
|
112 const xmlChar *input); |
|
113 XMLPUBFUN xmlEntitiesTablePtr XMLCALL |
|
114 xmlCreateEntitiesTable (void); |
|
115 #ifdef LIBXML_TREE_ENABLED |
|
116 XMLPUBFUN xmlEntitiesTablePtr XMLCALL |
|
117 xmlCopyEntitiesTable (xmlEntitiesTablePtr table); |
|
118 #endif /* LIBXML_TREE_ENABLED */ |
|
119 XMLPUBFUN void XMLCALL |
|
120 xmlFreeEntitiesTable (xmlEntitiesTablePtr table); |
|
121 #ifdef LIBXML_OUTPUT_ENABLED |
|
122 XMLPUBFUN void XMLCALL |
|
123 xmlDumpEntitiesTable (xmlBufferPtr buf, |
|
124 xmlEntitiesTablePtr table); |
|
125 XMLPUBFUN void XMLCALL |
|
126 xmlDumpEntityDecl (xmlBufferPtr buf, |
|
127 xmlEntityPtr ent); |
|
128 #endif /* LIBXML_OUTPUT_ENABLED */ |
|
129 #ifdef LIBXML_LEGACY_ENABLED |
|
130 XMLPUBFUN void XMLCALL |
|
131 xmlCleanupPredefinedEntities(void); |
|
132 #endif /* LIBXML_LEGACY_ENABLED */ |
|
133 |
|
134 |
|
135 #ifdef __cplusplus |
|
136 } |
|
137 #endif |
|
138 |
|
139 # endif /* __XML_ENTITIES_H__ */ |