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