1998-07-24 23:24:09 +04:00
/*
* entities . h : interface for the XML entities handking
*
* See Copyright for the status of this software .
*
1999-01-17 22:11:59 +03:00
* Daniel . Veillard @ w3 . org
1998-07-24 23:24:09 +04:00
*/
# ifndef __XML_ENTITIES_H__
# define __XML_ENTITIES_H__
2000-04-03 23:48:13 +04:00
# include <libxml/tree.h>
1998-07-24 23:24:09 +04:00
# ifdef __cplusplus
extern " C " {
# endif
2000-03-14 21:30:20 +03:00
/*
* The different valid entity types
*/
typedef enum {
XML_INTERNAL_GENERAL_ENTITY = 1 ,
XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2 ,
XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3 ,
XML_INTERNAL_PARAMETER_ENTITY = 4 ,
XML_EXTERNAL_PARAMETER_ENTITY = 5 ,
XML_INTERNAL_PREDEFINED_ENTITY = 6
} xmlEntityType ;
1998-08-13 07:39:55 +04:00
1998-07-24 23:24:09 +04:00
/*
* An unit of storage for an entity , contains the string , the value
* and the linkind data needed for the linking in the hash table .
*/
2000-01-05 17:46:17 +03:00
typedef struct _xmlEntity xmlEntity ;
typedef xmlEntity * xmlEntityPtr ;
struct _xmlEntity {
2000-03-14 21:30:20 +03:00
# ifndef XML_WITHOUT_CORBA
void * _private ; /* for Corba, must be first ! */
# endif
xmlElementType type ; /* XML_ENTITY_DECL, must be second ! */
const xmlChar * name ; /* Attribute name */
struct _xmlNode * children ; /* NULL */
struct _xmlNode * last ; /* NULL */
struct _xmlDtd * parent ; /* -> DTD */
struct _xmlNode * next ; /* next sibling link */
struct _xmlNode * prev ; /* previous sibling link */
struct _xmlDoc * doc ; /* the containing document */
xmlChar * orig ; /* content without ref substitution */
xmlChar * content ; /* content or ndata if unparsed */
int length ; /* the content length */
xmlEntityType etype ; /* The entity type */
const xmlChar * ExternalID ; /* External identifier for PUBLIC */
const xmlChar * SystemID ; /* URI for a SYSTEM or PUBLIC Entity */
# ifdef WITH_EXTRA_ENT_DETECT
/* Referenced entities name stack */
xmlChar * ent ; /* Current parsed Node */
int entNr ; /* Depth of the parsing stack */
int entMax ; /* Max depth of the parsing stack */
xmlChar * * entTab ; /* array of nodes */
# endif
2000-01-05 17:46:17 +03:00
} ;
1998-07-24 23:24:09 +04:00
/*
* ALl entities are stored in a table there is one table per DTD
* and one extra per document .
*/
# define XML_MIN_ENTITIES_TABLE 32
2000-01-05 17:46:17 +03:00
typedef struct _xmlEntitiesTable xmlEntitiesTable ;
typedef xmlEntitiesTable * xmlEntitiesTablePtr ;
struct _xmlEntitiesTable {
1998-07-24 23:24:09 +04:00
int nb_entities ; /* number of elements stored */
int max_entities ; /* maximum number of elements */
2000-03-14 21:30:20 +03:00
xmlEntityPtr * table ; /* the table of entities */
2000-01-05 17:46:17 +03:00
} ;
1998-07-24 23:24:09 +04:00
1998-10-27 09:21:04 +03:00
1998-07-24 23:24:09 +04:00
/*
* External functions :
*/
2000-03-14 21:30:20 +03:00
xmlEntityPtr xmlAddDocEntity ( xmlDocPtr doc ,
1999-09-24 02:19:22 +04:00
const xmlChar * name ,
1999-08-30 01:02:19 +04:00
int type ,
1999-09-24 02:19:22 +04:00
const xmlChar * ExternalID ,
const xmlChar * SystemID ,
const xmlChar * content ) ;
2000-03-14 21:30:20 +03:00
xmlEntityPtr xmlAddDtdEntity ( xmlDocPtr doc ,
1999-09-24 02:19:22 +04:00
const xmlChar * name ,
1999-08-30 01:02:19 +04:00
int type ,
1999-09-24 02:19:22 +04:00
const xmlChar * ExternalID ,
const xmlChar * SystemID ,
const xmlChar * content ) ;
xmlEntityPtr xmlGetPredefinedEntity ( const xmlChar * name ) ;
1999-08-30 01:02:19 +04:00
xmlEntityPtr xmlGetDocEntity ( xmlDocPtr doc ,
1999-09-24 02:19:22 +04:00
const xmlChar * name ) ;
1999-08-30 01:02:19 +04:00
xmlEntityPtr xmlGetDtdEntity ( xmlDocPtr doc ,
1999-09-24 02:19:22 +04:00
const xmlChar * name ) ;
1999-08-30 01:02:19 +04:00
xmlEntityPtr xmlGetParameterEntity ( xmlDocPtr doc ,
1999-09-24 02:19:22 +04:00
const xmlChar * name ) ;
const xmlChar * xmlEncodeEntities ( xmlDocPtr doc ,
const xmlChar * input ) ;
1999-10-08 13:40:39 +04:00
xmlChar * xmlEncodeEntitiesReentrant ( xmlDocPtr doc ,
1999-09-24 02:19:22 +04:00
const xmlChar * input ) ;
1999-08-30 01:02:19 +04:00
xmlEntitiesTablePtr xmlCreateEntitiesTable ( void ) ;
xmlEntitiesTablePtr xmlCopyEntitiesTable ( xmlEntitiesTablePtr table ) ;
void xmlFreeEntitiesTable ( xmlEntitiesTablePtr table ) ;
void xmlDumpEntitiesTable ( xmlBufferPtr buf ,
xmlEntitiesTablePtr table ) ;
2000-03-14 21:30:20 +03:00
void xmlDumpEntityDecl ( xmlBufferPtr buf ,
xmlEntityPtr ent ) ;
1999-08-30 01:02:19 +04:00
xmlEntitiesTablePtr xmlCopyEntitiesTable ( xmlEntitiesTablePtr table ) ;
1999-12-01 12:51:45 +03:00
void xmlCleanupPredefinedEntities ( void ) ;
1998-07-24 23:24:09 +04:00
2000-03-14 21:30:20 +03:00
# ifdef WITH_EXTRA_ENT_DETECT
int xmlEntityAddReference ( xmlEntityPtr ent ,
const xmlChar * to ) ;
# endif
1998-07-24 23:24:09 +04:00
# ifdef __cplusplus
}
# endif
# endif /* __XML_ENTITIES_H__ */