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-Refences 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 XMLCALL
164: xlinkGetDefaultDetect (void);
165: XMLPUBFUN void XMLCALL
166: xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
167:
168: /*
169: * Routines to set/get the default handlers.
170: */
171: XMLPUBFUN xlinkHandlerPtr XMLCALL
172: xlinkGetDefaultHandler (void);
173: XMLPUBFUN void XMLCALL
174: xlinkSetDefaultHandler (xlinkHandlerPtr handler);
175:
176: /*
177: * Link detection module itself.
178: */
179: XMLPUBFUN xlinkType XMLCALL
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__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>