1998-07-24 19:24:09 +00:00
/*
* entities . h : interface for the XML entities handking
*
* See Copyright for the status of this software .
*
1999-01-17 19:11:59 +00:00
* Daniel . Veillard @ w3 . org
1998-07-24 19:24:09 +00:00
*/
# ifndef __XML_ENTITIES_H__
# define __XML_ENTITIES_H__
2000-04-03 19:48:13 +00:00
# include <libxml/tree.h>
1998-07-24 19:24:09 +00:00
# ifdef __cplusplus
extern " C " {
# endif
2000-03-14 18:30:20 +00: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 03:39:55 +00:00
1998-07-24 19:24:09 +00: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 14:46:17 +00:00
typedef struct _xmlEntity xmlEntity ;
typedef xmlEntity * xmlEntityPtr ;
struct _xmlEntity {
2000-03-14 18:30:20 +00: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 */
2000-10-22 16:56:02 +00:00
struct _xmlEntity * nexte ; /* unused */
2000-09-10 16:14:55 +00:00
const xmlChar * URI ; /* the full URI as computed */
2000-01-05 14:46:17 +00:00
} ;
1998-07-24 19:24:09 +00:00
/*
2000-10-22 16:56:02 +00:00
* ALl entities are stored in an hash table
* there is 2 separate hash tables for global and parmeter entities
1998-07-24 19:24:09 +00:00
*/
2000-10-22 16:56:02 +00:00
typedef struct _xmlHashTable xmlEntitiesTable ;
2000-01-05 14:46:17 +00:00
typedef xmlEntitiesTable * xmlEntitiesTablePtr ;
1998-10-27 06:21:04 +00:00
1998-07-24 19:24:09 +00:00
/*
* External functions :
*/
2000-10-01 18:23:35 +00:00
void xmlInitializePredefinedEntities ( void ) ;
2000-03-14 18:30:20 +00:00
xmlEntityPtr xmlAddDocEntity ( xmlDocPtr doc ,
1999-09-23 22:19:22 +00:00
const xmlChar * name ,
1999-08-29 21:02:19 +00:00
int type ,
1999-09-23 22:19:22 +00:00
const xmlChar * ExternalID ,
const xmlChar * SystemID ,
const xmlChar * content ) ;
2000-03-14 18:30:20 +00:00
xmlEntityPtr xmlAddDtdEntity ( xmlDocPtr doc ,
1999-09-23 22:19:22 +00:00
const xmlChar * name ,
1999-08-29 21:02:19 +00:00
int type ,
1999-09-23 22:19:22 +00:00
const xmlChar * ExternalID ,
const xmlChar * SystemID ,
const xmlChar * content ) ;
xmlEntityPtr xmlGetPredefinedEntity ( const xmlChar * name ) ;
1999-08-29 21:02:19 +00:00
xmlEntityPtr xmlGetDocEntity ( xmlDocPtr doc ,
1999-09-23 22:19:22 +00:00
const xmlChar * name ) ;
1999-08-29 21:02:19 +00:00
xmlEntityPtr xmlGetDtdEntity ( xmlDocPtr doc ,
1999-09-23 22:19:22 +00:00
const xmlChar * name ) ;
1999-08-29 21:02:19 +00:00
xmlEntityPtr xmlGetParameterEntity ( xmlDocPtr doc ,
1999-09-23 22:19:22 +00:00
const xmlChar * name ) ;
const xmlChar * xmlEncodeEntities ( xmlDocPtr doc ,
const xmlChar * input ) ;
1999-10-08 09:40:39 +00:00
xmlChar * xmlEncodeEntitiesReentrant ( xmlDocPtr doc ,
1999-09-23 22:19:22 +00:00
const xmlChar * input ) ;
2000-06-28 23:40:59 +00:00
xmlChar * xmlEncodeSpecialChars ( xmlDocPtr doc ,
const xmlChar * input ) ;
1999-08-29 21:02:19 +00:00
xmlEntitiesTablePtr xmlCreateEntitiesTable ( void ) ;
xmlEntitiesTablePtr xmlCopyEntitiesTable ( xmlEntitiesTablePtr table ) ;
void xmlFreeEntitiesTable ( xmlEntitiesTablePtr table ) ;
void xmlDumpEntitiesTable ( xmlBufferPtr buf ,
xmlEntitiesTablePtr table ) ;
2000-03-14 18:30:20 +00:00
void xmlDumpEntityDecl ( xmlBufferPtr buf ,
xmlEntityPtr ent ) ;
1999-08-29 21:02:19 +00:00
xmlEntitiesTablePtr xmlCopyEntitiesTable ( xmlEntitiesTablePtr table ) ;
1999-12-01 09:51:45 +00:00
void xmlCleanupPredefinedEntities ( void ) ;
1998-07-24 19:24:09 +00:00
2000-03-14 18:30:20 +00:00
1998-07-24 19:24:09 +00:00
# ifdef __cplusplus
}
# endif
# endif /* __XML_ENTITIES_H__ */