aboutsummaryrefslogtreecommitdiffstats
path: root/lib/xmerl/include/xmerl_xsd.hrl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xmerl/include/xmerl_xsd.hrl')
-rw-r--r--lib/xmerl/include/xmerl_xsd.hrl194
1 files changed, 194 insertions, 0 deletions
diff --git a/lib/xmerl/include/xmerl_xsd.hrl b/lib/xmerl/include/xmerl_xsd.hrl
new file mode 100644
index 0000000000..b527accc8c
--- /dev/null
+++ b/lib/xmerl/include/xmerl_xsd.hrl
@@ -0,0 +1,194 @@
+%%% The contents of this file are subject to the Erlang Public License,
+%%% Version 1.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.erlang.org/license/EPL1_0.txt
+%%%
+%%% Software distributed under the License is distributed on an "AS IS"
+%%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%%% the License for the specific language governing rights and limitations
+%%% under the License.
+%%%
+%%%
+%%% The Initial Developer of the Original Code is Ericsson Telecom
+%%% AB. Portions created by Ericsson are Copyright (C), 1998, Ericsson
+%%% Telecom AB. All Rights Reserved.
+%%%-------------------------------------------------------------------
+
+%%% File : xmerl_xsd.hrl
+%%% Author : Bertil Karlsson <bertil@finrod>
+%%% Description :
+%%%
+%%% Created : 20 Jan 2006 by Bertil Karlsson <bertil@finrod>
+%%%-------------------------------------------------------------------
+
+%%-define(DEBUG,ok).
+
+-ifdef(DEBUG).
+-define(debug(_Fmt_,_Args_),ok=io:format("~p: " ++ _Fmt_, [?LINE|_Args_])).
+-else.
+-define(debug(_Fmt_,_Args_),no_debug).
+-endif.
+
+-define(XSD_NAMESPACE,'http://www.w3.org/2001/XMLSchema').
+-define(XSD_INSTANCE_NAMESPACE,'http://www.w3.org/2001/XMLSchema-instance').
+
+-record(xsd_state,{
+ schema_name,
+ vsn,
+ schema_preprocessed=false,
+ xsd_base,
+ xml_options=[],
+ scope=[],
+ schemaLocations=[],
+ elementFormDefault=unqualified,
+ attributeFormDefault=unqualified,
+ localElementsNamespace,
+ targetNamespace,
+ namespace_nodes=[{"xml",'http://www.w3.org/XML/1998/namespace'}],
+ global_namespace_nodes=[],
+ checked_namespace_nodes=[{"xml",[],'http://www.w3.org/XML/1998/namespace'}],
+ table,
+ tab2file=false, %% for debuging of abstract syntax
+ redefine=false,
+ finalDefault, %% undefined | '#all' | [atom()]
+ %% atom() -> extension |
+ %% restriction | list | union
+ blockDefault,
+ fetch_fun,
+ fetch_path=[],
+ num_el=0,
+ global_element_source=[],
+ keyrefs=[],
+ 'IDs'=[],
+ substitutionGroups=[],
+ derived_types=[],
+ unchecked_references=[],
+ circularity_stack=[],
+ circularity_disallowed=[],
+ errors=[]
+ }).
+-record(schema,{
+ elementFormDefault,
+ attributeFormDefault,
+ targetNamespace,
+ blockDefault=[],
+ finalDefault=[],
+ id,
+ content=[]
+ }).
+-record(schema_element,{
+ name, %% QName
+ type, %% name of derived type or built-in type
+ resolved=false,
+ substitutionGroup,
+ uniqueness, %% list() initiates in element_content for element
+ key, %% list() initiates in element_content for element
+ scope,
+ form, %% unqualified | qualified
+ id,
+ occurance={1,1}, %% {minOccurs,maxOccurs}
+ value_constraint, %% undefined | {default,Value} | {fixed,Value}
+ nillable=false, %% true | false
+ abstract=false, %% true | false
+ block=[],
+ final=[]
+ }).
+-record(schema_simple_type,{
+ name,
+ scope,
+ base_type,
+ resolved=false,
+ final=[],
+ id,
+ facets=[],
+ variety=atomic, %% atomic | list | union
+ content
+ }).
+-record(schema_complex_type,{
+ name,
+ base_type,
+ resolved=false,
+ scope,
+ derivation,
+ final=[], %% controls derivation by types
+ id,
+ block=[], %% prevents using of derived types in instance
+%% mixed=false,
+ abstract=false,
+ content_type='element-only',%% mixed | 'element-only'
+ complexity, %% undefined | simple | complex
+ attributes=[],
+ content=[],
+ prohibited
+ }).
+-record(schema_attribute,{
+ name,
+ type,
+ resolved=false,
+ scope,
+%% required=false,
+ use=optional, %% optional | required | prohibited
+ default,
+ fixed,
+ form, %% qualified | unqualified
+ id
+ }).
+-record(schema_attribute_group,{
+ name,
+ id,
+ ref, %% in this case no name or content
+ content=[]
+ }).
+-record(schema_anyAttribute,{
+ id,
+ processContents = strict,
+ namespace,
+ scope
+ }).
+-record(schema_group,{
+ name,
+ id,
+ ref, %% in this case no name or content
+ content=[],
+ occurance={1,1}
+ }).
+-record(schema_extension,{
+ base,
+ id,
+ content=[]
+ }).
+-record(schema_restriction,{
+ base,
+ id,
+ content=[]
+ }).
+-record(schema_list,{
+ id,
+ itemType
+ }).
+-record(id_constraint,{
+ category,% unique | key | keyref
+ id,
+ name,
+ refer, % only if type is keyref
+ type, %% This must be a simple type. Obtained by the
+ %% selector/fields
+ selector,
+ fields, %% list()
+ key_sequence
+ }).
+
+
+%% content model records, used in the static structure of what is
+%% allowed for a schema.
+%% chain, represents a series of ordered objects, some of whom may be
+%% optional.
+%% alterantive, a collection of objects of which only one is choosen.
+-record(chain,{
+ content,
+ occurance={1,1}
+ }).
+-record(alternative,{
+ content,
+ occurance={0,1}
+ }).