00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef XML_SCHEMA_H
00019 #define XML_SCHEMA_H
00020
00029 #include <xml_schema_defines.h>
00030 #include <xml_schema_annotated.h>
00031 #include <axiom_element.h>
00032 #include <axiom_node.h>
00033 #include <axis2_hash.h>
00034
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046
00047 typedef struct xml_schema xml_schema_t;
00048 typedef struct xml_schema_ops xml_schema_ops_t;
00049 struct xml_schema_form;
00050 struct xml_schema_obj_table;
00051 struct xml_schema_derivation_method;
00052 struct xml_schema_element;
00053 struct xml_schema_type;
00054 struct xml_schema_obj_collection;
00055 struct xml_schema_collection;
00056
00057 #define XML_SCHEMA_NS "http://www.w3.org/2001/XMLSchema"
00058
00059 struct xml_schema_ops
00060 {
00065 axis2_status_t (AXIS2_CALL *
00066 free)(
00067 void *schema,
00068 const axis2_env_t *env);
00069
00070 axis2_hash_t *(AXIS2_CALL *
00071 super_objs)(
00072 void *schema,
00073 const axis2_env_t *env);
00074
00075 xml_schema_types_t (AXIS2_CALL *
00076 get_type)( void *schema,
00077 const axis2_env_t *env);
00078
00079 xml_schema_annotated_t *(AXIS2_CALL *
00080 get_base_impl)(
00081 void *schema,
00082 const axis2_env_t *env);
00083
00084 axis2_char_t *(AXIS2_CALL *
00085 get_namespace)(
00086 void *schema,
00087 const axis2_env_t *env,
00088 axis2_char_t *prefix);
00089
00090 struct xml_schema_form *(AXIS2_CALL *
00091 get_attr_form_default)(
00092 void *schema,
00093 const axis2_env_t *env);
00094
00095 axis2_status_t (AXIS2_CALL *
00096 set_attr_form_default)(
00097 void *schema,
00098 const axis2_env_t *env,
00099 struct xml_schema_form *value);
00100
00101 struct xml_schema_obj_table *(AXIS2_CALL *
00102 get_attr_groups)(
00103 void *schema,
00104 const axis2_env_t *env);
00105
00106 struct xml_schema_obj_table *(AXIS2_CALL *
00107 get_attrs)(
00108 void *schema,
00109 const axis2_env_t *env);
00110
00111 struct xml_schema_derivation_method *(AXIS2_CALL *
00112 get_block_default)(
00113 void *schema,
00114 const axis2_env_t *env);
00115
00116 axis2_status_t (AXIS2_CALL *
00117 set_block_default)(
00118 void *schema,
00119 const axis2_env_t *env,
00120 struct xml_schema_derivation_method *block_default);
00121
00122 struct xml_schema_form *(AXIS2_CALL *
00123 get_element_form_default)(
00124 void *schema,
00125 const axis2_env_t *env);
00126
00127 axis2_status_t (AXIS2_CALL *
00128 set_element_form_default)(
00129 void *schema,
00130 const axis2_env_t *env,
00131 struct xml_schema_form *element_form_default);
00132
00133 struct xml_schema_obj_table *(AXIS2_CALL *
00134 get_elements)(
00135 void *schema,
00136 const axis2_env_t *env);
00137
00138 struct xml_schema_element *(AXIS2_CALL *
00139 get_element_by_qname)(
00140 void *schema,
00141 const axis2_env_t *env,
00142 const axis2_qname_t *qname);
00143
00144 struct xml_schema_type *(AXIS2_CALL *
00145 get_type_by_qname)(
00146 void *schema,
00147 const axis2_env_t *env,
00148 axis2_qname_t *qname);
00149
00150 struct xml_schema_derivation_method *(AXIS2_CALL *
00151 get_final_default)(
00152 void *schema,
00153 const axis2_env_t *env);
00154
00155 axis2_status_t (AXIS2_CALL *
00156 set_final_default)(
00157 void *schema,
00158 const axis2_env_t *env,
00159 struct xml_schema_derivation_method *final_default);
00160
00161 struct xml_schema_obj_table *(AXIS2_CALL *
00162 get_groups)(
00163 void *schema,
00164 const axis2_env_t *env);
00165
00166 struct xml_schema_obj_collection *(AXIS2_CALL *
00167 get_includes)(
00168 void *schema,
00169 const axis2_env_t *env);
00170
00171 axis2_bool_t (AXIS2_CALL *
00172 is_compiled)(
00173 void *schema,
00174 const axis2_env_t *env);
00175
00176 struct xml_schema_obj_collection *(AXIS2_CALL *
00177 get_items)(
00178 void *schema,
00179 const axis2_env_t *env);
00180
00181 struct xml_schema_obj_table *(AXIS2_CALL *
00182 get_notations)(
00183 void *schema,
00184 const axis2_env_t *env);
00185
00186 struct xml_schema_obj_table *(AXIS2_CALL *
00187 get_schema_types)(
00188 void *schema,
00189 const axis2_env_t *env);
00190
00191 axis2_char_t *(AXIS2_CALL *
00192 get_target_namespace)(
00193 void *schema,
00194 const axis2_env_t *env);
00195
00196 axis2_status_t (AXIS2_CALL *
00197 set_target_namespace)(
00198 void *schema,
00199 const axis2_env_t *env,
00200 axis2_char_t *target_namespace);
00201
00202 axis2_char_t *(AXIS2_CALL *
00203 get_version)(
00204 void *schema,
00205 const axis2_env_t *env);
00206
00207 axis2_status_t (AXIS2_CALL *
00208 compile)(void *schema,
00209 const axis2_env_t *env);
00210
00211 axis2_status_t (AXIS2_CALL *
00212 write_with_out)(
00213 void *schema,
00214 const axis2_env_t *env,
00215 void *outstream);
00216
00217 axis2_status_t (AXIS2_CALL *
00218 write_with_writer)(
00219 void *schema,
00220 void *writer);
00221
00222 axis2_hash_t *(AXIS2_CALL *
00223 get_prefix_to_namespace_map)(
00224 void *schema,
00225 const axis2_env_t *env);
00226
00227 axis2_status_t (AXIS2_CALL *
00228 set_prefix_to_namespace_map)(
00229 void *schema,
00230 const axis2_env_t *env,
00231 axis2_hash_t *map);
00232
00233 axis2_status_t (AXIS2_CALL *
00234 add_type)(
00235 void *schema,
00236 const axis2_env_t *env,
00237 struct xml_schema_type *type);
00238
00239 axis2_status_t (AXIS2_CALL *
00240 set_schema_ns_prefix)(
00241 void *schema,
00242 const axis2_env_t *env,
00243 axis2_char_t *ns_prefix);
00244
00245 axis2_char_t* (AXIS2_CALL*
00246 serialize)(
00247 void *schema,
00248 const axis2_env_t *env);
00249
00250 axis2_status_t (AXIS2_CALL*
00251 set_root_node)(
00252 void *schema,
00253 const axis2_env_t *env,
00254 axiom_node_t *node);
00255
00256 };
00257
00258 struct xml_schema
00259 {
00260 xml_schema_annotated_t base;
00261 xml_schema_ops_t *ops;
00262 };
00263
00267 AXIS2_EXTERN xml_schema_t * AXIS2_CALL
00268 xml_schema_create(const axis2_env_t *env,
00269 axis2_char_t *namespc,
00270 struct xml_schema_collection *parent);
00271
00272 #define XML_SCHEMA_FREE(schema, env) \
00273 (((xml_schema_t *) schema)->ops->\
00274 free(schema, env))
00275
00276 #define XML_SCHEMA_SUPER_OBJS(schema, env) \
00277 (((xml_schema_t *) schema)->ops->\
00278 super_objs(schema, env))
00279
00280 #define XML_SCHEMA_GET_TYPE(schema, env) \
00281 (((xml_schema_t *) schema)->ops->\
00282 get_type(schema, env))
00283
00284 #define XML_SCHEMA_GET_BASE_IMPL(schema, env) \
00285 (((xml_schema_t *) schema)->ops->\
00286 get_base_impl(schema, env))
00287
00288 #define XML_SCHEMA_GET_NAMESPACE(schema, env, prefix) \
00289 (((xml_schema_t *) schema)->ops->\
00290 get_namespace(schema, env, prefix))
00291
00292 #define XML_SCHEMA_GET_ATTR_FORM_DEFAULT(schema, env) \
00293 (((xml_schema_t *) schema)->ops->\
00294 get_attr_form_default(schema, env))
00295
00296 #define XML_SCHEMA_SET_ATTR_FORM_DEFAULT(schema, env, attr_form) \
00297 (((xml_schema_t *) schema)->ops->\
00298 set_attr_form_default(schema, env, attr_form))
00299
00300 #define XML_SCHEMA_GET_ATTR_GROUPS(schema, env) \
00301 (((xml_schema_t *) schema)->ops->\
00302 get_attr_groups(schema, env))
00303
00304 #define XML_SCHEMA_GET_ATTRS(schema, env) \
00305 (((xml_schema_t *) schema)->ops->\
00306 get_attrs(schema, env))
00307
00308 #define XML_SCHEMA_GET_BLOCK_DEFAULT(schema, env) \
00309 (((xml_schema_t *) schema)->ops->\
00310 get_block_default(schema, env))
00311
00312
00313 #define XML_SCHEMA_SET_BLOCK_DEFAULT(schema, env, block_default) \
00314 (((xml_schema_t *) schema)->ops->\
00315 set_block_default(schema, env, block_default))
00316
00317 #define XML_SCHEMA_GET_ELEMENT_FORM_DEFAULT(schema, env) \
00318 (((xml_schema_t *) schema)->ops->\
00319 get_element_form_default(schema, env))
00320
00321 #define XML_SCHEMA_SET_ELEMENT_FORM_DEFAULT(schema, env, ele_form_default) \
00322 (((xml_schema_t *) schema)->ops->\
00323 set_element_form_default(schema, env, ele_form_default))
00324
00325 #define XML_SCHEMA_GET_ELEMENTS(schema, env) \
00326 (((xml_schema_t *) schema)->ops->\
00327 get_elements(schema, env))
00328
00329 #define XML_SCHEMA_GET_ELEMENT_BY_QNAME(schema, env, qname) \
00330 (((xml_schema_t *) schema)->ops->\
00331 get_element_by_qname(schema, env, qname))
00332
00333 #define XML_SCHEMA_GET_TYPE_BY_QNAME(schema, env, qname) \
00334 (((xml_schema_t *) schema)->ops->\
00335 get_type_by_qname(schema, env, qname))
00336
00337 #define XML_SCHEMA_SET_FINAL_DEFAULT(schema, env, final_default) \
00338 (((xml_schema_t *) schema)->ops->\
00339 set_final_default(schema, env, final_default))
00340
00341 #define XML_SCHEMA_GET_FINAL_DEFAULT(schema, env) \
00342 (((xml_schema_t *) schema)->ops->\
00343 get_final_default(schema, env))
00344
00345 #define XML_SCHEMA_GET_GROUPS(schema, env) \
00346 (((xml_schema_t *) schema)->ops->\
00347 get_groups(schema, env))
00348
00349
00350 #define XML_SCHEMA_GET_INCLUDES(schema, env) \
00351 (((xml_schema_t *) schema)->ops->\
00352 get_includes(schema, env))
00353
00354 #define XML_SCHEMA_IS_COMPILED(schema, env) \
00355 (((xml_schema_t *) schema)->ops->\
00356 is_compiled(schema, env))
00357
00358 #define XML_SCHEMA_GET_ITEMS(schema, env) \
00359 (((xml_schema_t *) schema)->ops->\
00360 get_items(schema, env))
00361
00362 #define XML_SCHEMA_GET_NOTATIONS(schema, env) \
00363 (((xml_schema_t *) schema)->ops->\
00364 get_items(schema, env))
00365
00366 #define XML_SCHEMA_GET_SCHEMA_TYPES(schema, env) \
00367 (((xml_schema_t *) schema)->ops->\
00368 get_schema_types(schema, env))
00369
00370 #define XML_SCHEMA_GET_TARGET_NAMESPACE(schema, env) \
00371 (((xml_schema_t *) schema)->ops->\
00372 get_target_namespace(schema, env))
00373
00374 #define XML_SCHEMA_SET_TARGET_NAMESPACE(schema, env, target_ns) \
00375 (((xml_schema_t *) schema)->ops->\
00376 set_target_namespace(schema, env, target_ns))
00377
00378 #define XML_SCHEMA_GET_VERSION(schema, env) \
00379 (((xml_schema_t *) schema)->ops->\
00380 get_version(schema, env))
00381
00382 #define XML_SCHEMA_COMPILE(schema, env) \
00383 (((xml_schema_t *) schema)->ops->\
00384 compile(schema, env))
00385
00386 #define XML_SCHEMA_WRITE_WITH_OUT(schema, env, out) \
00387 (((xml_schema_t *) schema)->ops->\
00388 write_with_out(schema, env, out))
00389
00390 #define XML_SCHEMA_WRITE_WITH_WRITER(schema, env, writer) \
00391 (((xml_schema_t *) schema)->ops->\
00392 write_with_writer(schema, env, writer))
00393
00394 #define XML_SCHEMA_GET_PREFIX_TO_NAMESPACE_MAP(schema, env)\
00395 (((xml_schema_t *) schema)->ops->\
00396 get_prefix_to_namespace_map(schema, env))
00397
00398 #define XML_SCHEMA_SET_PREFIX_TO_NAMESPACE_MAP(schema, env, map)\
00399 (((xml_schema_t *) schema)->ops->\
00400 set_prefix_to_namespace_map(schema, env, map))
00401
00402 #define XML_SCHEMA_ADD_TYPE(schema, env, type)\
00403 (((xml_schema_t *) schema)->ops->\
00404 add_type(schema, env, type))
00405
00406 #define XML_SCHEMA_SET_SCHEMA_NS_PREFIX(schema, env, ns_prefix) \
00407 (((xml_schema_t *) schema)->ops->\
00408 set_schema_ns_prefix(schema, env, ns_prefix))
00409
00410 #define XML_SCHEMA_SERIALIZE(schema, env) \
00411 (((xml_schema_t *) schema)->ops->\
00412 serialize(schema, env))
00413
00414 #define XML_SCHEMA_SET_ROOT_NODE(schema, env, root_node) \
00415 (((xml_schema_t *) schema)->ops->\
00416 set_root_node(schema, env, root_node))
00417
00418
00420 #ifdef __cplusplus
00421 }
00422 #endif
00423 #endif