| /* |
| * Copyright 2004,2005 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef XML_SCHEMA_COLLECTION_H |
| #define XML_SCHEMA_COLLECTION_H |
| |
| /** |
| * @file xml_schema_collection.h |
| * @brief Axis2 Xml Schema Collection interface |
| * Contains a cache of XML Schema definition language (XSD). |
| */ |
| |
| #include <axis2_allocator.h> |
| #include <axis2_env.h> |
| #include <axis2_error.h> |
| #include <axis2_string.h> |
| #include <axis2_utils.h> |
| |
| #include <axis2_array_list.h> |
| #include <axis2_hash.h> |
| #include <axis2_qname.h> |
| #include <xml_schema_obj.h> |
| #include <axiom_xml_reader.h> |
| #include <axiom_document.h> |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| typedef struct xml_schema_collection |
| xml_schema_collection_t; |
| typedef struct xml_schema_collection_ops |
| xml_schema_collection_ops_t; |
| struct xml_schema; |
| struct axiom_node; |
| struct xml_schema_type; |
| |
| /** @defgroup xml_schema_collection Xml Schema Collection |
| * @ingroup xml_schema |
| * @{ |
| */ |
| |
| struct xml_schema_collection_ops |
| { |
| axis2_status_t (AXIS2_CALL * |
| free)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env); |
| |
| axis2_status_t (AXIS2_CALL * |
| set_base_uri)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_char_t *base_uri); |
| |
| axis2_char_t* (AXIS2_CALL* |
| get_base_uri)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env); |
| |
| |
| axis2_status_t (AXIS2_CALL * |
| init)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env); |
| |
| |
| struct xml_schema* (AXIS2_CALL * |
| read_with_reader)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axiom_xml_reader_t *reader); |
| |
| |
| struct xml_schema *(AXIS2_CALL * |
| read_document) ( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axiom_document_t *document); |
| |
| struct xml_schema *(AXIS2_CALL * |
| read_element)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axiom_node_t *ele_node); |
| |
| struct xml_schema* (AXIS2_CALL * |
| read_document_with_uri) ( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axiom_document_t *document, |
| axis2_char_t *uri); |
| |
| struct xml_schema *(AXIS2_CALL * |
| read_element_with_uri)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axiom_node_t *ele_node, |
| axis2_char_t *uri); |
| |
| struct xml_schema* (AXIS2_CALL * |
| get_schema)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_char_t *system_id); |
| |
| struct xml_schema_element *(AXIS2_CALL * |
| get_element_by_qname)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_qname_t *qname); |
| |
| struct xml_schema_type *(AXIS2_CALL * |
| get_type_by_qname)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_qname_t *schema_type_qname); |
| |
| |
| axis2_status_t (AXIS2_CALL * |
| add_unresolved_type)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_qname_t *qtype, |
| void *receiver); |
| |
| |
| axis2_status_t (AXIS2_CALL * |
| resolve_type)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_qname_t *type_qname, |
| struct xml_schema_type *type); |
| |
| |
| axis2_char_t *(AXIS2_CALL * |
| get_namespace_for_prefix)( |
| xml_schema_collection_t *collection, |
| const axis2_env_t *env, |
| axis2_char_t *prefix); |
| |
| |
| axis2_status_t (AXIS2_CALL * |
| map_namespace)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env, |
| axis2_char_t *prefix, |
| axis2_char_t *namespc_uri); |
| |
| axis2_hash_t* (AXIS2_CALL * |
| get_systemid2_schemas)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env); |
| |
| axis2_array_list_t* (AXIS2_CALL * |
| get_schemas)( |
| xml_schema_collection_t* collection, |
| const axis2_env_t *env); |
| |
| axis2_status_t* (AXIS2_CALL * |
| set_schemas)( |
| xml_schema_collection_t *collection, |
| const axis2_env_t *env, |
| axis2_array_list_t *schemas); |
| |
| axis2_hash_t* (AXIS2_CALL * |
| get_namespaces)( |
| xml_schema_collection_t *collection, |
| const axis2_env_t *env); |
| |
| axis2_status_t (AXIS2_CALL * |
| set_namespaces)( |
| xml_schema_collection_t *collection, |
| const axis2_env_t *env); |
| |
| |
| }; |
| |
| struct xml_schema_collection |
| { |
| xml_schema_collection_ops_t *ops; |
| }; |
| |
| AXIS2_EXTERN xml_schema_collection_t * AXIS2_CALL |
| xml_schema_collection_create(const axis2_env_t *env); |
| |
| /***************** MACROS *****************************************************/ |
| |
| #define XML_SCHEMA_COLLECTION_FREE(collection, env) \ |
| ((collection)->ops->free (collection, env)) |
| |
| #define XML_SCHEMA_COLLECTION_INIT(collection, env) \ |
| ((collection)->ops->init(collection, env)) |
| |
| #define XML_SCHEMA_COLLECTION_READ_WITH_READER(collection, env, reader) \ |
| ((collection)->ops->read_with_reader( \ |
| collection, env, reader)) |
| |
| #define XML_SCHEMA_COLLECTION_READ_DOCUMENT(collection, env, doc) \ |
| ((collection)->ops->read_document(collection, env, doc)) |
| |
| #define XML_SCHEMA_COLLECTION_READ_DOCUMENT_WITH_URI(collection , env, document, uri) \ |
| ((collection)->ops->read_document_with_uri( \ |
| collection , env, document, uri)) |
| |
| #define XML_SCHEMA_COLLECTION_READ_ELEMENT(collection, env, uri) \ |
| ((collection)->ops->read_element(collection, env, uri)) |
| |
| #define XML_SCHEMA_COLLECTION_READ_ELEMENT_WITH_URI(collection, env, ele_node, uri ) \ |
| ((collection)->ops->read_element_with_uri(collection, env, ele_node, uri )) |
| |
| #define XML_SCHEMA_COLLECTION_GET_ELEMENT_BY_QNAME(collection, env, qname) \ |
| ((collection)->ops->get_element_by_qname(collection, env, qname)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_TYPE_BY_QNAME(collection, env, qname) \ |
| ((collection)->ops->get_type_by_qname(collection, env, qname)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_ELEMENT_BY_QNAME(collection, env, qname) \ |
| ((collection)->ops->get_element_by_qname(collection, env, qname)) |
| |
| #define XML_SCHEMA_COLLECTION_ADD_UNRESOLVED_TYPE(collection, env, qtype, receiver) \ |
| ((collection)->ops->add_unresolved_type(collection, env, qtype, receiver)) |
| |
| #define XML_SCHEMA_COLLECTION_RESOLVE_TYPE(collection, env, type_qname, type) \ |
| ((collection)->ops->resolve_type(collection, env, type_qname, type)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_NAMESPACE_FOR_PREFIX(collection, env, prefix) \ |
| ((collection)->ops->get_namespace_for_prefix(collection, env, prefix)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_SYSTEMID2_SCHEMAS(collection, env) \ |
| ((collection)->ops->get_systemid2_schemas(collection, env)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_SCHEMAS(collection, env) \ |
| ((collection)->ops->get_schemas(collection, env)) |
| |
| #define XML_SCHEMA_COLLECTION_SET_SCHEMAS(collection, env) \ |
| ((collection)->ops->set_schemas(collection, env)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_NAMESPACES(collection, env) \ |
| ((collection)->ops->get_namespaces(collection, env)) |
| |
| #define XML_SCHEMA_COLLECTION_SET_NAMESPACES(collection, env, ht_ns) \ |
| ((collection)->ops->set_namespaces(collection, env, ht_ns)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_SCHEMA(collection, env, system_id) \ |
| ((collection)->ops->get_schema(collection, env, system_id)) |
| |
| #define XML_SCHEMA_COLLECTION_SET_BASE_URI(collection, env, base_uri) \ |
| ((collection)->ops->set_base_uri (collection, env, base_uri)) |
| |
| #define XML_SCHEMA_COLLECTION_GET_BASE_URI(collection, env) \ |
| ((collection)->ops->get_base_uri(collection, env)) |
| |
| /** @} */ |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* XML_SCHEMA_COLLECTION_H */ |