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