(root)/
libxml2-2.12.3/
include/
libxml/
xlink.h
       1  /*
       2   * Summary: unfinished XLink detection module
       3   * Description: unfinished XLink detection module
       4   *
       5   * Copy: See Copyright for the status of this software.
       6   *
       7   * Author: Daniel Veillard
       8   */
       9  
      10  #ifndef __XML_XLINK_H__
      11  #define __XML_XLINK_H__
      12  
      13  #include <libxml/xmlversion.h>
      14  #include <libxml/tree.h>
      15  
      16  #ifdef LIBXML_XPTR_ENABLED
      17  
      18  #ifdef __cplusplus
      19  extern "C" {
      20  #endif
      21  
      22  /**
      23   * Various defines for the various Link properties.
      24   *
      25   * NOTE: the link detection layer will try to resolve QName expansion
      26   *       of namespaces. If "foo" is the prefix for "http://foo.com/"
      27   *       then the link detection layer will expand role="foo:myrole"
      28   *       to "http://foo.com/:myrole".
      29   * NOTE: the link detection layer will expand URI-References found on
      30   *       href attributes by using the base mechanism if found.
      31   */
      32  typedef xmlChar *xlinkHRef;
      33  typedef xmlChar *xlinkRole;
      34  typedef xmlChar *xlinkTitle;
      35  
      36  typedef enum {
      37      XLINK_TYPE_NONE = 0,
      38      XLINK_TYPE_SIMPLE,
      39      XLINK_TYPE_EXTENDED,
      40      XLINK_TYPE_EXTENDED_SET
      41  } xlinkType;
      42  
      43  typedef enum {
      44      XLINK_SHOW_NONE = 0,
      45      XLINK_SHOW_NEW,
      46      XLINK_SHOW_EMBED,
      47      XLINK_SHOW_REPLACE
      48  } xlinkShow;
      49  
      50  typedef enum {
      51      XLINK_ACTUATE_NONE = 0,
      52      XLINK_ACTUATE_AUTO,
      53      XLINK_ACTUATE_ONREQUEST
      54  } xlinkActuate;
      55  
      56  /**
      57   * xlinkNodeDetectFunc:
      58   * @ctx:  user data pointer
      59   * @node:  the node to check
      60   *
      61   * This is the prototype for the link detection routine.
      62   * It calls the default link detection callbacks upon link detection.
      63   */
      64  typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
      65  
      66  /*
      67   * The link detection module interact with the upper layers using
      68   * a set of callback registered at parsing time.
      69   */
      70  
      71  /**
      72   * xlinkSimpleLinkFunk:
      73   * @ctx:  user data pointer
      74   * @node:  the node carrying the link
      75   * @href:  the target of the link
      76   * @role:  the role string
      77   * @title:  the link title
      78   *
      79   * This is the prototype for a simple link detection callback.
      80   */
      81  typedef void
      82  (*xlinkSimpleLinkFunk)	(void *ctx,
      83  			 xmlNodePtr node,
      84  			 const xlinkHRef href,
      85  			 const xlinkRole role,
      86  			 const xlinkTitle title);
      87  
      88  /**
      89   * xlinkExtendedLinkFunk:
      90   * @ctx:  user data pointer
      91   * @node:  the node carrying the link
      92   * @nbLocators: the number of locators detected on the link
      93   * @hrefs:  pointer to the array of locator hrefs
      94   * @roles:  pointer to the array of locator roles
      95   * @nbArcs: the number of arcs detected on the link
      96   * @from:  pointer to the array of source roles found on the arcs
      97   * @to:  pointer to the array of target roles found on the arcs
      98   * @show:  array of values for the show attributes found on the arcs
      99   * @actuate:  array of values for the actuate attributes found on the arcs
     100   * @nbTitles: the number of titles detected on the link
     101   * @title:  array of titles detected on the link
     102   * @langs:  array of xml:lang values for the titles
     103   *
     104   * This is the prototype for a extended link detection callback.
     105   */
     106  typedef void
     107  (*xlinkExtendedLinkFunk)(void *ctx,
     108  			 xmlNodePtr node,
     109  			 int nbLocators,
     110  			 const xlinkHRef *hrefs,
     111  			 const xlinkRole *roles,
     112  			 int nbArcs,
     113  			 const xlinkRole *from,
     114  			 const xlinkRole *to,
     115  			 xlinkShow *show,
     116  			 xlinkActuate *actuate,
     117  			 int nbTitles,
     118  			 const xlinkTitle *titles,
     119  			 const xmlChar **langs);
     120  
     121  /**
     122   * xlinkExtendedLinkSetFunk:
     123   * @ctx:  user data pointer
     124   * @node:  the node carrying the link
     125   * @nbLocators: the number of locators detected on the link
     126   * @hrefs:  pointer to the array of locator hrefs
     127   * @roles:  pointer to the array of locator roles
     128   * @nbTitles: the number of titles detected on the link
     129   * @title:  array of titles detected on the link
     130   * @langs:  array of xml:lang values for the titles
     131   *
     132   * This is the prototype for a extended link set detection callback.
     133   */
     134  typedef void
     135  (*xlinkExtendedLinkSetFunk)	(void *ctx,
     136  				 xmlNodePtr node,
     137  				 int nbLocators,
     138  				 const xlinkHRef *hrefs,
     139  				 const xlinkRole *roles,
     140  				 int nbTitles,
     141  				 const xlinkTitle *titles,
     142  				 const xmlChar **langs);
     143  
     144  /**
     145   * This is the structure containing a set of Links detection callbacks.
     146   *
     147   * There is no default xlink callbacks, if one want to get link
     148   * recognition activated, those call backs must be provided before parsing.
     149   */
     150  typedef struct _xlinkHandler xlinkHandler;
     151  typedef xlinkHandler *xlinkHandlerPtr;
     152  struct _xlinkHandler {
     153      xlinkSimpleLinkFunk simple;
     154      xlinkExtendedLinkFunk extended;
     155      xlinkExtendedLinkSetFunk set;
     156  };
     157  
     158  /*
     159   * The default detection routine, can be overridden, they call the default
     160   * detection callbacks.
     161   */
     162  
     163  XMLPUBFUN xlinkNodeDetectFunc
     164  		xlinkGetDefaultDetect	(void);
     165  XMLPUBFUN void
     166  		xlinkSetDefaultDetect	(xlinkNodeDetectFunc func);
     167  
     168  /*
     169   * Routines to set/get the default handlers.
     170   */
     171  XMLPUBFUN xlinkHandlerPtr
     172  		xlinkGetDefaultHandler	(void);
     173  XMLPUBFUN void
     174  		xlinkSetDefaultHandler	(xlinkHandlerPtr handler);
     175  
     176  /*
     177   * Link detection module itself.
     178   */
     179  XMLPUBFUN xlinkType
     180  		xlinkIsLink		(xmlDocPtr doc,
     181  					 xmlNodePtr node);
     182  
     183  #ifdef __cplusplus
     184  }
     185  #endif
     186  
     187  #endif /* LIBXML_XPTR_ENABLED */
     188  
     189  #endif /* __XML_XLINK_H__ */