1999-12-12 13:03:50 +00:00
/*
* xlink . h : interfaces to the hyperlinks detection module
*
* See Copyright for the status of this software .
*
* Related specification : http : //www.w3.org/TR/xlink
* http : //www.w3.org/HTML/
* and XBase
*
* Daniel . Veillard @ w3 . org
*/
# ifndef __XML_XLINK_H__
# define __XML_XLINK_H__
2000-04-03 19:48:13 +00:00
# include <libxml/tree.h>
1999-12-12 13:03:50 +00:00
1999-12-18 15:32:46 +00:00
# ifdef __cplusplus
2000-07-14 14:49:25 +00:00
extern " C " {
1999-12-18 15:32:46 +00:00
# endif
1999-12-12 13:03:50 +00:00
/**
* Various defines for the various Link properties .
*
* NOTE : the link detection layer will try to resolve QName expansion
* of namespaces , if " foo " is the prefix for " http://foo.com/ "
* then the link detection layer will expand role = " foo:myrole "
* to " http://foo.com/:myrole "
* NOTE : the link detection layer will expand URI - Refences found on
* href attributes by using the base mechanism if found .
*/
typedef xmlChar * xlinkHRef ;
typedef xmlChar * xlinkRole ;
typedef xmlChar * xlinkTitle ;
typedef enum {
XLINK_TYPE_NONE = 0 ,
XLINK_TYPE_SIMPLE ,
XLINK_TYPE_EXTENDED ,
XLINK_TYPE_EXTENDED_SET
} xlinkType ;
typedef enum {
XLINK_SHOW_NONE = 0 ,
XLINK_SHOW_NEW ,
XLINK_SHOW_EMBED ,
XLINK_SHOW_REPLACE
} xlinkShow ;
typedef enum {
XLINK_ACTUATE_NONE = 0 ,
XLINK_ACTUATE_AUTO ,
XLINK_ACTUATE_ONREQUEST
} xlinkActuate ;
/**
* xlinkNodeDetectFunc :
* @ ctx : user data pointer
* @ node : the node to check
*
* This is the prototype for the link detection routine
* It calls the default link detection callbacks upon link detection .
*/
typedef void
( * xlinkNodeDetectFunc ) ( void * ctx ,
xmlNodePtr node ) ;
/**
* The link detection module interract with the upper layers using
* a set of callback registered at parsing time .
*/
/**
* xlinkSimpleLinkFunk :
* @ ctx : user data pointer
* @ node : the node carrying the link
* @ href : the target of the link
* @ role : the role string
* @ title : the link title
*
* This is the prototype for a simple link detection callback .
*/
typedef void
( * xlinkSimpleLinkFunk ) ( void * ctx ,
xmlNodePtr node ,
const xlinkHRef href ,
const xlinkRole role ,
const xlinkTitle title ) ;
/**
* xlinkExtendedLinkFunk :
* @ ctx : user data pointer
* @ node : the node carrying the link
* @ nbLocators : the number of locators detected on the link
* @ hrefs : pointer to the array of locator hrefs
* @ roles : pointer to the array of locator roles
* @ nbArcs : the number of arcs detected on the link
* @ from : pointer to the array of source roles found on the arcs
* @ to : pointer to the array of target roles found on the arcs
* @ show : array of values for the show attributes found on the arcs
* @ actuate : array of values for the actuate attributes found on the arcs
* @ nbTitles : the number of titles detected on the link
* @ title : array of titles detected on the link
* @ langs : array of xml : lang values for the titles
*
* This is the prototype for a extended link detection callback .
*/
typedef void
( * xlinkExtendedLinkFunk ) ( void * ctx ,
xmlNodePtr node ,
int nbLocators ,
const xlinkHRef * hrefs ,
const xlinkRole * roles ,
int nbArcs ,
const xlinkRole * from ,
const xlinkRole * to ,
xlinkShow * show ,
xlinkActuate * actuate ,
int nbTitles ,
const xlinkTitle * titles ,
const xmlChar * * langs ) ;
/**
* xlinkExtendedLinkSetFunk :
* @ ctx : user data pointer
* @ node : the node carrying the link
* @ nbLocators : the number of locators detected on the link
* @ hrefs : pointer to the array of locator hrefs
* @ roles : pointer to the array of locator roles
* @ nbTitles : the number of titles detected on the link
* @ title : array of titles detected on the link
* @ langs : array of xml : lang values for the titles
*
* This is the prototype for a extended link set detection callback .
*/
typedef void
( * xlinkExtendedLinkSetFunk ) ( void * ctx ,
xmlNodePtr node ,
int nbLocators ,
const xlinkHRef * hrefs ,
const xlinkRole * roles ,
int nbTitles ,
const xlinkTitle * titles ,
const xmlChar * * langs ) ;
/**
* This is the structure containing a set of Links detection callbacks
*
* There is no default xlink callbacks , if one want to get link
* recognition activated , those call backs must be provided before parsing .
*/
2000-01-05 14:46:17 +00:00
typedef struct _xlinkHandler xlinkHandler ;
typedef xlinkHandler * xlinkHandlerPtr ;
struct _xlinkHandler {
1999-12-12 13:03:50 +00:00
xlinkSimpleLinkFunk simple ;
xlinkExtendedLinkFunk extended ;
xlinkExtendedLinkSetFunk set ;
2000-01-05 14:46:17 +00:00
} ;
1999-12-12 13:03:50 +00:00
/**
* the default detection routine , can be overriden , they call the default
* detection callbacks .
*/
xlinkNodeDetectFunc xlinkGetDefaultDetect ( void ) ;
void xlinkSetDefaultDetect ( xlinkNodeDetectFunc func ) ;
/**
* Routines to set / get the default handlers .
*/
xlinkHandlerPtr xlinkGetDefaultHandler ( void ) ;
void xlinkSetDefaultHandler ( xlinkHandlerPtr handler ) ;
/*
* Link detection module itself .
*/
xlinkType xlinkIsLink ( xmlDocPtr doc ,
xmlNodePtr node ) ;
1999-12-18 15:32:46 +00:00
# ifdef __cplusplus
}
# endif
1999-12-12 13:03:50 +00:00
# endif /* __XML_XLINK_H__ */