xlink.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:5k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

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