%%% 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,
external_xsd_base=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 chosen.
-record(chain,{
content,
occurance={1,1}
}).
-record(alternative,{
content,
occurance={0,1}
}).